找到有问题的宏

Finding the problematic macro

自从加入项目以来,我的编译输出一直是这样的:

[  0%] Building CXX object lib-tests/gmock/CMakeFiles/gmock_main.dir/gtest/src/gtest-all.cc.o
<command-line>:0:23: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:20: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:23: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:20: warning: ISO C99 requires whitespace after the macro name
[  0%] Building CXX object lib-tests/gmock/CMakeFiles/gmock_main.dir/src/gmock-all.cc.o
<command-line>:0:23: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:20: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:23: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:20: warning: ISO C99 requires whitespace after the macro name
[  0%] Building CXX object lib-tests/gmock/CMakeFiles/gmock_main.dir/src/gmock_main.cc.o
<command-line>:0:23: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:20: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:23: warning: ISO C99 requires whitespace after the macro name
<command-line>:0:20: warning: ISO C99 requires whitespace after the macro name
[  0%] Linking CXX static library libgmock_main.a
[  0%] Built target gmock_main

等等。在整个项目的每个文件被编译到 100% 之间总是有这个警告。这只是编译的开始,它从 google 测试库开始,但我并不特别怀疑它是错误宏的来源。 (但它可能是)这很奇怪,因为当我 google 这个警告时,人们得到了代码和宏的快照,但我的编译器不这样做,我只得到警告。

我在 Debian 上使用带有 gnu 编译器和 cmake 的 CLion。我尝试了多个正则表达式来查找没有空格的宏,但没有找到任何成功。我应该如何识别生成此警告的宏?

感谢@stefan 对我的问题的评论,从我的 CMakeLists.txt 文件中删除 2 个标记解决了这个问题。

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -O0 -g -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_RULE_MESSAGES:BOOL=ON")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -O0 -g")

我仔细检查并删除这些标志不会隐藏编译器警告,如未使用的变量等。我不确定删除这些标志会有什么影响。