gcc(或任何其他编译器)是否有选项可以警告全局命名空间污染?
我尝试编译一个示例应用程序套件,但结果发现该样本的一些头文件受到全局命名空间污染(头文件中的 using namespace
)的影响,所以Mac OS X全局结构Rect变得模棱两可。
我还尝试更改#include的顺序,以便在 using namespace
的雷区之前解析系统的Rect符号,但这会导致某些符号最终无法解析。
我之前使用Google进行的搜索失败,但预感不好,如果存在这种警告选项,请告诉我信息。
答案 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
直接激活它(目前,它是该群组的唯一成员)。
它已在邮件列表中进行了彻底审查,通常不会对常规案例发出警告。