gpt4 book ai didi

c++ - 不必要命名空间的编译器警告

转载 作者:太空狗 更新时间:2023-10-29 23:15:25 25 4
gpt4 key购买 nike

我有很多代码在功能上是这样的:

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);

}}}

通过开始删除我们庞大、扩展的代码库中的此类事件,我们节省了(令人尴尬的)文本空间。然而,它进展缓慢且容易出错,因为我们是通过 vgrep 来完成的。

理想情况下,会有一个编译器警告。我们的代码库分别支持三种不同平台(Windows、Linux 和 Mac)上的三种不同编译器(MSVC、g++ 和 Clang)。

我找不到启用对我们有帮助的警告,而且很难用 Google 搜索,因为人们会生成 class A { void A::method(void) {} }; 错误 a很多(并且 g++ 捕获了这一点,因为它不符合标准)。我们的问题是命名空间,而不是类型

那么,我应该(至少)在上述编译器之一中启用什么警告?还有其他解决方案吗?

最佳答案

好吧,我自己写的。

我在github上为它做了一个仓库,here .它是我为类似的代码质量任务(复杂性较低)使用的一些旧脚本的重构/概括。

我最初尝试将其基于 CPIP ,我发现它有点问题而且太慢了。取而代之的是,当前版本是基于一个非常快的自制词法分析器(但实际上并不是预处理器)。这确实会导致许多限制和误报,这些都已记录在案。

但是,原型(prototype)对我们来说非常成功。我们能够在几个小时内删除我们遗漏的所有问题,误报(由于假预处理的限制)仅出现在 4 个文件(共 829 个)中。

我希望这对 future 的人有所帮助!检查一下!

关于c++ - 不必要命名空间的编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29293136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com