【发布时间】:2015-09-10 11:05:10
【问题描述】:
在我尝试移植的 C/C++ 代码中,包含一个已弃用的系统标头:
从标题:
#ifdef __GNUC__
#warning "this header is deprecated"
#endif
当我们在这里用gcc -Wall -Werror 编译时,编译停止。
从长远来看,最好使用已弃用的函数,但现在我只想禁用此警告。
在没有-Werror 的情况下编译当然可以,但由于这是完全自动化的构建过程的一部分,我不想这样做。
在之前包含 #undefing __GNUC__ 和之后包含 #defineing 的标头是可能的,但我担心包含的标头内部的副作用。
有没有办法只为一个标题禁用#warning 或放松-Werror?
【问题讨论】:
-
没有“C/C++代码”之类的东西。
-
事物被弃用是有原因的。与其试图解决问题,不如消除问题并停止使用已弃用的标头。如果他们弃用了标头,那么肯定有更好、更现代的方式来实现您的目标。
-
@LightnessRacesinOrbit:它是 C 和 C++ 代码的混合体。
-
@ThomasErker:这没有任何意义,除非您指的是一个由不同的 C 和 C++ 编写的翻译单元组成的程序......但这不是一个最小的测试用例。你的意思是说它是主要使用 C 习惯用法的 C++ 代码吗?
-
@LightnessRacesinOrbit:C-ish C++ 中的一个库,必须由 C 和 C++ 使用,以及一些必须可编译为 C 和 C++ 的帮助程序/示例程序。所以解决方案必须与 C 和 C++ 兼容。我期待“C/C++ 代码”以与“Perl/Python 代码”相同的方式被理解。有更好的措辞吗?
标签: c gcc c-preprocessor preprocessor-directive