今天在给图像采集卡写程序的时候,发现虽然我把图像采集卡提供的头文件以及dll文件还有lib文件都加入工程了,但是在程序里面使用他提供的数据类型的时候还是不行,找了半天错误,想到有可能是因为那些头文件里面预定义的一些宏造成的。结果一试,果然如此,整个头文件被这样两句话包含在中间:
#ifdef _CG400
#endif
而我的程序里面别的位置又没定义这个宏,当然进入不到两句话中间的那些定义里面去了啊。
但是回头想想这个宏有什么用呢?
当然有很大的用了。由于采集卡有多种,那么他们之间各自都有一套定义,所以你在使用那些定义定制程序的的时候,预先定义一个相关的宏,比如这个里面的 _CG400,就可以相应的使用CG400采集卡的一套定义而不会发生冲突了。还有例如CG300之类的。那么,这些宏就相当于是一个开关,控制你进入哪一套体系里面去。
这种方法值得学习。
这套采集卡提供的程序里面还有很多值得学习的地方,比如说他将函数运行状态以及状态定义成枚举,函数运行后大多返回一个枚举,然后又用一个状态检查宏来检查,都是比较好的方法,值得学习。还有什么就在后面总结吧。
#ifdef _CG400
#endif
而我的程序里面别的位置又没定义这个宏,当然进入不到两句话中间的那些定义里面去了啊。
但是回头想想这个宏有什么用呢?
当然有很大的用了。由于采集卡有多种,那么他们之间各自都有一套定义,所以你在使用那些定义定制程序的的时候,预先定义一个相关的宏,比如这个里面的 _CG400,就可以相应的使用CG400采集卡的一套定义而不会发生冲突了。还有例如CG300之类的。那么,这些宏就相当于是一个开关,控制你进入哪一套体系里面去。
这种方法值得学习。
这套采集卡提供的程序里面还有很多值得学习的地方,比如说他将函数运行状态以及状态定义成枚举,函数运行后大多返回一个枚举,然后又用一个状态检查宏来检查,都是比较好的方法,值得学习。还有什么就在后面总结吧。