给定:
#if defined(TESTING)
#if (TESTING == UNIT_TEST)
State<StateTypeEnum, EventTypeEnum>::_isIgnoredEvent = false;
State<StateTypeEnum, EventTypeEnum>::_isInvalidEvent = false;
#endif
#endif
TESTING
被定义,UNIT_TEST
和 TESTING == UNIT_TEST
,为什么 GCC 说
../testing/fsm/../../fsm/h/state.h:207:17: error: operator '==' has no left operand
#if (TESTING == UNIT_TEST)
^
最佳答案
看起来您只是定义了 TESTING 而没有用值定义它,无论是内联的还是作为编译器命令行的一部分。
#define TESTING
它已被定义,并且#if defined 测试为真,但比较将不起作用,因为它的宏替换值是空的(或错误的类型)。
但是,如果您给它一个值,那么您的代码就可以工作。
#define TESTING 1
#define UNIT_TEST 1
#if defined(TESTING)
#if (TESTING == UNIT_TEST)
cout << "Unit test";
#endif
#endif
关于c++ - 运算符 '==' 没有左操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24720534/