C++实习笔记(1)

gzrjzcx 2017-10-12 09:37:04
1.如果要在类内使用静态成员变量(static)时,需要在类内声明,类外定义

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*的值来接收。


2.Sprintf函数的使用
Sprintf函数主要用于将各个类型的数据拼接成一串字符串并写入制定内存中。

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


3.对于别人只提供dll时,在SDK中只需要调用其提供的API接口即可,但要注意在不同的解决方案配置中右键—>属性—>链接器—>常规—>附加库目录中的目录则为dll库的目录,如果修改过则需要手动复制新的dll库目录到bin下。

4.注意如果解决方案下有很多项目的时候,注意生成dll时候顺序不同会产生不一样的结构,可以设置关联关系让其关联生成(一旦某项目生成dll,则其他项目跟着生成)。
...全文
319 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
FoolCarpe 2017-10-24
  • 打赏
  • 举报
回复
gzrjzcx 2017-10-17
  • 打赏
  • 举报
回复
新手中的菜鸟,发错了地方 望见谅~
赵4老师 2017-10-13
  • 打赏
  • 举报
回复

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧