c++ - 为什么在 GCC/C++ 中弹出 "pragma GCC diagnostic push"警告?

标签 c++ pragma

#pragma GCC diagnostic push

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

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

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

最佳答案

#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 编译指示的代码。

关于c++ - 为什么在 GCC/C++ 中弹出 "pragma GCC diagnostic push"警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555585/

相关文章:

c - Pragma 及其在我的代码中的合适用途?

c++ - 如何在 g++ 中抑制 ' left shift count >= width of type' 警告

c - 如何使用#pragma pack(1) OR/Zp1 以便它们单独影响应用程序定义结构的打包,而不影响 Windows SDK 中定义的结构?

c++ - 禁用 "In file included from"g++ 消息

c++ - C++ 库中静态 STL 容器的双重初始化

c++ - 跨多个文件的好友功能

c++ - 如何开始学习 MinGW C++?

c++ - 有没有办法用 std::function 而不是结构调用 std::equal_range ?

c++ - 如何在不单击的情况下初始化 QComboBox 的默认值?

c++ - 是否有任何控制循环展开的预处理器指令?