加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 运算符’==’没有左操作数

发布时间:2020-12-16 09:53:25 所属栏目:百科 来源:网络整理
导读:鉴于: #if defined(TESTING) #if (TESTING == UNIT_TEST) StateStateTypeEnum,EventTypeEnum::_isIgnoredEvent = false; StateStateTypeEnum,EventTypeEnum::_isInvalidEvent = false; #endif#endif 定义了TESTING,就像UNIT_TEST和TESTING == UNIT_TEST一样
鉴于:

#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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读