读书人

问一个c++得基础有关问题求指教下

发布时间: 2013-03-26 09:54:33 作者: rapoo

问一个c++得基础问题,求指教下,谢谢
我发现库里面定义过一个宏 #define NO (BOOL)0
然后我在一个自己得头文件里定义了 一个枚举enum{
CU = 0, // current
WE = 1, // west
NO = 2 // north
}
然后我在cpp文件里去包这个头文件 会报错吗?
库里面 不能添加代码 所以无法使用命名空间
我的报错信息是 Expected '}' 一个语法错误 但是我确定语法没错!
我在mac 下跑没出现这个错误 库里面也有这个宏 !!!
我是c++菜鸟 求大家指点!!!
[解决办法]
如果楼主必须要在自己的enum里面用NO,可以修改他那个头文件#define 里面的NO 的名字。不会影响他们的lib或(和)dll
[解决办法]
这是由宏的重定义,或者说你的变量跟系统预定义宏的冲突引起的问题。解决办法有
1、重新定义NO宏,方法如下:
#ifdef NO
#undef NO
#endif
把这几句写在文件前面,然后你就可以再你的枚举里面用NO,应该不影响了。

2、重新定义枚举
enum{
CU = 0, // current
WE = 1, // west
M_NO = 2 // north }

推荐第二种。
[解决办法]
你可以把你的object cpp 拆分成两部分 一部分用cpp 实现 这样可以include你的头文件 一部分用object cpp文件 用来添加include头文件

读书人网 >C++

热点推荐