鉴于:
#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定义测试为true,但是比较将不起作用,因为其宏替换值是空(或错误的类型)。
但是,如果给它一个值,那么代码就可以工作。
#define TESTING 1
#define UNIT_TEST 1
#if defined(TESTING)
#if (TESTING == UNIT_TEST)
cout << "Unit test";
#endif
#endif
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句