c++ - 有没有办法警告我全局命名空间污染?

标签 c++ namespaces warnings

gcc(或任何其他编译器)是否有警告我全局命名空间污染的选项?

我试图编译一个示例应用程序套件,但事实证明该示例的很多头文件都受到全局命名空间污染的困扰(在 header 中使用命名空间文件),因此 Mac OS X 全局结构 Rect 变得不明确。 我还尝试更改 #include 的顺序以在 using namespace 的雷区之前解析系统的 Rect 符号,但这导致一些符号最终没有解析。

我之前使用谷歌搜索失败,虽然预感不好,如果存在这种警告选项,请给我信息。

最佳答案

我不知道 gcc,但 CLang 有:

def warn_using_directive_in_header : Warning<
  "using namespace directive in global context in header">,
  InGroup<HeaderHygiene>, DefaultIgnore;

您可以直接使用 -Wusing-directive-in-header 或通过组 -Wheader-hygiene 激活它(目前,它是组)。

它已经在邮件列表上进行了彻底审查,通常不会对常规情况发出警告。

关于c++ - 有没有办法警告我全局命名空间污染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5813852/

相关文章:

c++ - 使用可变参数模板进行类型推导和参数传递

c++ - 错误 LNK2019 : unresolved external symbol C++ in Qt platform

c++ - 计算二维数组的平均值、最小值、最大值

c++ - 在 Mac 上编译 C++ 代码

c++ - 在其 namespace 中导出函数?

php - 引用 - 这个错误在 PHP 中意味着什么?

javascript - 如何使用 v8 native 插件将 C++ 数组传送到 node.js

php - Silex ActiveRecord 模型加载

android - InputConnectionWrapper 警告

perl - 在引用 undef 值时如何让 Perl 停止?