Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 操作员'==';没有左操作数_C++_Gcc_C Preprocessor - Fatal编程技术网

C++ 操作员'==';没有左操作数

C++ 操作员'==';没有左操作数,c++,gcc,c-preprocessor,C++,Gcc,C Preprocessor,鉴于: 看起来您只是定义了测试,而没有使用值(内联或作为编译器命令行的一部分)来定义它 ../testing/fsm/../../fsm/h/state.h:207:17: error: operator '==' has no left operand #if (TESTING == UNIT_TEST) ^ 它已定义,并且#如果已定义,则测试为true,但比较将不起作用,因为它的宏替换值为nothing(或错误的类型) 但是,如果您给它一个值,那么

鉴于:


看起来您只是定义了测试,而没有使用值(内联或作为编译器命令行的一部分)来定义它

../testing/fsm/../../fsm/h/state.h:207:17: error: operator '==' has no left operand
    #if (TESTING == UNIT_TEST)
                 ^
它已定义,并且#如果已定义,则测试为true,但比较将不起作用,因为它的宏替换值为nothing(或错误的类型)

但是,如果您给它一个值,那么您的代码就可以工作

#define TESTING
#定义测试1
#定义单元测试1
#如果定义(测试)
#如果(测试==单元测试)

你怎么定义
测试
?经过这么长时间,突然有三张反对票。如果有人告诉我原因,我会改正的。谢谢,回答正确。请注意,编译器处理符号的命令行定义的方式各不相同。符号是这样定义的吗?如果是,这是哪个编译器?@david.pfx您是想对OP的问题或我的答案发表评论?两者都有。我想是懒惰吧。您可以更新您的答案,以包含符号在命令行上定义的可能性,OP可以说它是否在命令行上定义。@david.pfx我已经在原始答案中包含了这种可能性。我在NetBeans项目文件中定义了它,我想这意味着它将在命令行上传递。
#define TESTING
#define TESTING 1
#define UNIT_TEST 1

#if defined(TESTING) 
#if (TESTING == UNIT_TEST)
cout << "Unit test";
#endif
#endif