不必要命名空间的编译器警告
Compiler Warning for Unnecessary Namespaces
我有很多代码在功能上是这样的:
namespace Foo { namespace Bar { namespace Baz {
class MyType {};
Foo::Bar::Baz::MyType func(Foo::Bar::Baz::MyType const& param);
}}}
因为 MyType
没有任何冲突的定义,这可以很容易地简化如下:
namespace Foo { namespace Bar { namespace Baz {
class MyType {};
MyType func(MyType const& param);
}}}
我们通过开始删除庞大、庞大的代码库中出现的此类事件,节省了(令人尴尬的)文本 space。然而,它进展缓慢且容易出错,因为我们是通过 vgrep 来完成的。
理想情况下,会有一个编译器警告。我们的代码库支持三种不同平台(Windows、Linux 和 Mac)上的三种不同编译器(MSVC、g++ 和 Clang),主要分别为。
我找不到可以帮助我们的警告,而且很难 Google 因为人们经常犯 class A { void A::method(void) {} };
错误(g++ 捕捉到这个,因为它不是标准的- 兼容)。我们的问题是 namespace 而不是 type.
那么,我应该(至少)在上述编译器之一中启用什么警告?还有其他解决方案吗?
我有很多代码在功能上是这样的:
namespace Foo { namespace Bar { namespace Baz {
class MyType {};
Foo::Bar::Baz::MyType func(Foo::Bar::Baz::MyType const& param);
}}}
因为 MyType
没有任何冲突的定义,这可以很容易地简化如下:
namespace Foo { namespace Bar { namespace Baz {
class MyType {};
MyType func(MyType const& param);
}}}
我们通过开始删除庞大、庞大的代码库中出现的此类事件,节省了(令人尴尬的)文本 space。然而,它进展缓慢且容易出错,因为我们是通过 vgrep 来完成的。
理想情况下,会有一个编译器警告。我们的代码库支持三种不同平台(Windows、Linux 和 Mac)上的三种不同编译器(MSVC、g++ 和 Clang),主要分别为。
我找不到可以帮助我们的警告,而且很难 Google 因为人们经常犯 class A { void A::method(void) {} };
错误(g++ 捕捉到这个,因为它不是标准的- 兼容)。我们的问题是 namespace 而不是 type.
那么,我应该(至少)在上述编译器之一中启用什么警告?还有其他解决方案吗?