Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
如何禁用关于作为GCC扩展的#warning指令的GCC警告?_Gcc_Warnings_Compiler Warnings_Gcc Warning - Fatal编程技术网

如何禁用关于作为GCC扩展的#warning指令的GCC警告?

如何禁用关于作为GCC扩展的#warning指令的GCC警告?,gcc,warnings,compiler-warnings,gcc-warning,Gcc,Warnings,Compiler Warnings,Gcc Warning,当使用#warning指令时,我得到的不是一个警告,而是两个-一个是我生成的警告,另一个是额外的警告 警告:#警告是一个GCC扩展[默认启用] 我可以使用-Wno cpp抑制#warning指令的结果本身,但这与我想要的相反 我可以通过使用#pragma message()来解决这个问题,但这似乎使得#warning指令毫无意义-没有办法抑制此警告吗?啊,似乎-pedantic选项启用了此警告,并且似乎没有特定的覆盖,与大多数其他GCC警告一样。删除-pedantic可以消除有关警告的警告 #i

当使用
#warning
指令时,我得到的不是一个警告,而是两个-一个是我生成的警告,另一个是额外的警告
警告:#警告是一个GCC扩展[默认启用]

我可以使用
-Wno cpp
抑制#warning指令的结果本身,但这与我想要的相反


我可以通过使用
#pragma message()
来解决这个问题,但这似乎使得#warning指令毫无意义-没有办法抑制此警告吗?

啊,似乎
-pedantic
选项启用了此警告,并且似乎没有特定的覆盖,与大多数其他GCC警告一样。删除
-pedantic
可以消除有关警告的警告

#ifdef __GNUC__
#warning "no warning here!"
#endif
将使用或不使用gcc编译,即使使用
-pedantic
,但仍会发出警告(如果警告升级为错误,则会失败)

更新:
根据,没有干净的解决方案可以选择性地禁用有关gnu特定的#pragma s的警告。实际上,以下方法应该有效。这样,您就可以抑制/忽略gcc警告

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wcpp"

...

#pragma GCC diagnostic pop

您传递给GCC的选项是什么?在本例中,它是
-g-static-static libgcc-Wall-Wextra-pedantic-Wno vla-Wsizeof pointer memaccess-Wmissing declarations-march=native-fexceptions-feexpensive optimizations-flto-O3-std=c++1y-fsanize=address
,请参见下面的答案,我意识到是-pedantic选项造成的。无论如何,它肯定会编译,但这并不能消除警告:
warning:#warning是一个GCC扩展[默认启用]
是的,我自己才意识到这一点。绝望地寻找一个咒语来把这该死的东西一扫而光。(添加
#pragma GCC diagnostic ignored“-Wunknown pragmas”
似乎不起作用。)虽然这是个好主意,但恐怕这对-pedantic警告不起作用。请参见此处的测试代码: