gpt4 book ai didi

c++ - 向 C++ 文件添加命名空间的脚本

转载 作者:行者123 更新时间:2023-12-03 03:43:07 25 4
gpt4 key购买 nike

所以我有一个巨大的代码库,需要添加一个命名空间。我没有手动执行此操作,而是考虑使用 grep、xargs 和 sed 将命名空间添加到所有源文件中...

但是我的技术达不到标准。理想情况下

namespace foo 
{

将添加在所有包含之后,并在 .h 文件中的 #endif 之后添加“}”。

对于 .cpp 文件,在所有包含之后添加“using namespace foo”就足够了。

我一直在摆弄 sed,但还没有走得太远。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

这不是一件容易的事。造成问题的因素包括

  • 您不想放置在新命名空间中的内容,例如
    • 类似于语言“C”{ C-stuff }的结构
    • 转发不属于您的类的声明。如果您使用一些也不使用命名空间的外部包,这会变得困难 n 倍。
  • 即使找到放置命名空间 Foo { 和结尾的“}”的位置也可能很困难。
    • 您确实希望附上前向声明,但不属于您的声明除外。
    • 您通常希望将所有涉及一对大括号的文件范围内的内容括起来 - 除了 C 语言 之类的内容。
    • 维护程序员(如果您的代码已经存在足够长的时间)会对您的代码做出各种坏事。他们会在类或函数内部、类和函数之间、除顶部之外的任何地方提出声明,以便于编写脚本。
    • 你不想双重嵌套东西。这样做非常容易。
    • 出于各种原因,有些人将看似无关的内容放在标题末尾。这可能是一个特别令人讨厌的问题。
    • 如果您决定尝试包含每个类、结构和枚举,您将必须弄清楚声明的真正开始位置。您想要包装 template 声明(如果有),当然还有 doxygen 注释等。
    • 查找类的末尾可能会很麻烦。人们有这种令人讨厌的倾向,在注释和字符串中放置不匹配的大括号。

祝你好运!写一个剧本需要半个多小时。这比重写所有代码花费的时间要少得多。我建议你使用比 sed 更强大的东西。 Perl、Python 和 ruby​​ 是三个不错的选择。

关于c++ - 向 C++ 文件添加命名空间的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7959669/

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