为什么在GCC / C ++中使用“pragma GCC诊断推送”弹出警告?

时间:2013-05-15 02:01:26

标签: c++ pragma

#pragma GCC diagnostic push

it pop: warning: expected [error|warning|ignored] after â#pragma GCC diagnosticâ

为什么呢?我在Linux中使用GCC。

我有一个问题,如果我不能使用pop / push,如果忽略影响编译的cpp,不影响其他cpp?如果其他一些包括上限,如果影响呢?

1 个答案:

答案 0 :(得分:17)

#pragma GCC diagnostic push#pragma GCC diagnostic popadded in gcc 4.6。你使用的是旧版本。

这些pragma通常与其他#pragma GCC diagnostic directives结合使用,仅针对代码的一小部分进行抑制,打开或转换为错误特定警告。如果忽略它们,则警告级别的更改将应用​​于源文件的其余部分,而不是直到下一个#pragma GCC diagnostic pop。这可能不是问题,也可能是世界末日;您需要了解您的代码才能确定。

无论哪种方式,您都应该更新编译器。你不会用C89编译器编译C99;不要使用gcc 4.4编译包含gcc 4.6的编译指示的代码。