c – 仅针对一个标头禁用#warning

前端之家收集整理的这篇文章主要介绍了c – 仅针对一个标头禁用#warning前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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标志执行操作.

原文链接:https://www.f2er.com/c/118515.html

猜你在找的C&C++相关文章