首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-03-26 
问一个c++得基础问题,求指教下,谢谢我发现库里面定义过一个宏#define NO(BOOL)0然后我在一个自己得头文件

问一个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头文件

热点排行