在C/C++代码中我尝试移植,包括一个不赞成使用的系统头:
从标题:
#ifdef __GNUC__ #warning "this header is deprecated" #endif
当我们使用gcc -Wall -Werror编译时,编译停止.
从长远来看,替换使用已弃用的函数是最好的,但是现在我想禁用此警告.
编译时没有-Werror当然有效,但由于这是完全自动化构建过程的一部分,我宁愿不这样做.
包括#undefing __GNUC__之前的标题和之后的#defineing是可能的,但我担心包含的标题内的副作用.
有没有办法禁用#warning或放松-Werror只为一个标题?
解决方法
您可以使用(GCC特定)
diagnostic pragma执行此操作
如果您使用以下内容包围include,它将禁用由#warning引起的任何警告.
#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wcpp" #include "header.h" #pragma GCC diagnostic pop
请注意,如果您在上面将忽略更改为警告,编译器仍会打印警告 – 它只是不对它们的-Werror标志执行操作.