15,440
社区成员
发帖
与我相关
我的任务
分享
class FD_Gaze_Obj : public FD_Gaze_API
{
public:
FD_Gaze_Obj()
{
public:
...
static char* FDinfo; //静态变量相当于全局变量,唯一且直到程序结束才销毁
static char FDinfo_ver[1024];
}
}
...
//在类外定义(初始化)
char* FD_Gaze_Obj::FDinfo = nullptr;
char FD_Gaze_Obj::FDinfo_ver[1024] = {0};
//静态变量即使函数执行结束也不会销毁
char* GetFDGVersion()
{
sprintf(FD_Gaze_Obj::FDinfo_ver, "%d-%s", (DATA_VER * 1000), FD_Gaze_Obj::FDinfo);
return FD_Gaze_Obj::FDinfo_ver;
}
char* GetAPIVersion()
{
return GetFDGVersion();
}
//调用GetAPIVersion函数时如果不使用静态变量(全局变量),那么当GetAPIVersion函数执行时候,GetFDGVersion已经执行
//过了,其中的局部变量FDinfo则会被销毁,就会导致char *gazeversion = GetAPIVersion();时gazeversion得到一个随机值。
GetSdkVersion(char version[1024])
{
memset(version,0,sizeof(version));
char ver[1024] = {0};
char *gazeversion = GetAPIVersion();
sprintf(ver, "123456789-%d-%s", 100001, gazeversion);
memcpy(version, ver, 1024);
return 0;
}
//对于char* 返回类型的函数,可以用char* 定义的变量来接收其返回值;对于char*的函数,返回值可以是char[],同样可以用ch
//ar*的值来接收。
sprintf(char* buffer,const char* format,[argument]...)
//其中buffer是char型指针,指向要写入的内存。
//format是需要"组装"的字符串
//如上述例子:
sprintf(ver, "123456789-%d-%s", 100001, gazeversion);
//指的是将几个参数组装成“123456789-100001-%s”类型的字符串,并将其地址赋给ver。
//需要注意的是,和printf一样,int ---%d,float---%f,char[]/char* --- %s