#pragma message("MAP_ENGINE=" BOOST_PP_STRINGIZE(MAP_ENGINE))
#if MAP_ENGINE == CE4
Type4 x = new Type4();
#elif MAP_ENGINE == CE5
Type5 x = new Type5();
#endif
此代码应根据预处理器值创建不同类型的var x
。我在Visual C ++项目设置中设置MAP_ENGINE
:
但CE4代码仍在编译中,我收到错误。我添加了#pragma
来检查值是否已设置:
1>MAP_ENGINE=CE5
1>.\MyFile.cpp(141) : error C2039: 'Type4 ' : undeclared identifier
一定是愚蠢的东西,但我看不到它!在项目设置中定义它意味着CE4 / CE5实际上不是一个定义的值吗?
答案 0 :(得分:0)
预处理程序==运算符仅执行整数运算(不扩展为看起来像整数的宏的宏被视为具有值0)。它不能用于比较字符串。
这样做:
#if defined(MAP_ENGINE_CE4)
// ...
#elif defined(MAP_ENGINE_CE5)
// ...
#else
#error Exactly one of MAP_ENGINE_CE4 and MAP_ENGINE_CE5 must be defined
#endif