有没有办法警告我全球命名空间污染?

时间:2011-04-28 05:05:41

标签: c++ namespaces warnings

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

我尝试编译一个示例应用程序套件,但结果发现该样本的一些头文件受到全局命名空间污染(头文件中的 using namespace )的影响,所以Mac OS X全局结构Rect变得模棱两可。 我还尝试更改#include的顺序,以便在 using namespace 的雷区之前解析系统的Rect符号,但这会导致某些符号最终无法解析。

我之前使用Google进行的搜索失败,但预感不好,如果存在这种警告选项,请告诉我信息。

1 个答案:

答案 0 :(得分:4)

我不知道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直接激活它(目前,它是该群组的唯一成员)。

它已在邮件列表中进行了彻底审查,通常不会对常规案例发出警告。