Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有办法警告我全局命名空间污染?_C++_Namespaces_Warnings - Fatal编程技术网

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

C++ 有没有办法警告我全局命名空间污染?,c++,namespaces,warnings,C++,Namespaces,Warnings,gcc(或任何其他编译器)是否有警告全局命名空间污染的选项 我试图编译一个示例应用程序套件,但结果发现该示例的很多头文件都受到全局名称空间污染(头文件中使用名称空间)的影响,因此Mac OS X global struct Rect变得模棱两可。 我还尝试更改#include的顺序,以便在使用namespace的雷区之前解析系统的Rect符号,但这导致一些符号最终无法解析 我以前用谷歌搜索失败了,不过预感不好,如果存在这种警告选项,请告诉我相关信息。我不知道gcc,但CLang有: def wa

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

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


我以前用谷歌搜索失败了,不过预感不好,如果存在这种警告选项,请告诉我相关信息。

我不知道gcc,但CLang有:

def warn_using_directive_in_header : Warning<
  "using namespace directive in global context in header">,
  InGroup<HeaderHygiene>, DefaultIgnore;
def warn_使用_标题中的_指令:警告<
“在标头中的全局上下文中使用命名空间指令”>,
组内,默认忽略;
您可以使用标题中的
-Wusing指令直接激活它,或通过组
-Wheader hygiene
(目前,它是组中唯一的成员)激活它


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

搜索和删除-这些问题通常会持续/返回,直到被删除。@Justin:问题是,可能有使用命名空间的
实例不在全局命名空间中。@Potatoswatter我不想暗示应该删除每个使用
声明的
;只有全局的(OP的主题)。@Justin@Potatoswatter在34个示例应用程序中使用名称空间
的大约75个
实例似乎有问题(不是少量源代码)。我知道我必须自己处理才能摆脱他们。但是,如果我所描述的警告选项存在,那么开发人员自己就会对在全局范围内使用名称空间变得谨慎,并且我必须为此付出的脑力劳动是可以避免的。sigh@Shigerello我理解这个问题,并避免使用
使用许多常见的
,我意识到我的评论并不是对您的问题的直接回答(如果没有为您的程序提供合适的答案,则是间接的)。如果你的目标是osx,那么Matthieu M.的回应应该会起到作用,如果你的程序现在与clang兼容的话。如果我知道这个标志存在的话,这就是我留下的答案。嗯,看起来这个警告选项是最近引入的。这些警告选项不适用于“Apple clang 2.0版”和适用于Xcode 4.0.1(/Developer/usr/bin/clang等)的gcc-4.2.1。我希望Xcode 3.2也能做到这一点。但绝对是一个令人愉快的特点。应该合并到gcc中。@Shigerello:这是最近的,我甚至不确定它是否出现在最新的CLang版本(2.9)中。