前几天发现同事定义了一个头文件,头文件的格式大体如下:
出现编译错误的原因就是宏定义根本就不属于该命名空间,宏定义不属于C++语句,宏定义在预处理阶段执行,而namespace属于c++语句在编译阶段执行,预处理在编译执行之前,预处理阶段对宏定义所做的工作就是代码替换&#
#ifndef _TESTCOMMON_H__
#define _TESTCOMMON_H__
namespace mySpace
{
#define MESSAGE_1 1001
#define MESSAGE_2 1002
}
#endif
在源程序中如果首先加入了这条语句“
using namespace mySpace;”的话,然后直接使用宏定义时,是没有任何问题的,但是如果使用
mySpace::MESSAGE_1就会出现编译错误。
testPro1.cpp:8:37: error: expected unqualified-id before numeric constant
testPro1.cpp:8:37: error: expected ';' before numeric constant