自动将 .h 拆分(重构)为标头和实现 (h+cpp)

Automatically split (refactor) .h into header and implementation (h+cpp)

本文关键字:h+cpp 实现 重构 拆分      更新时间:2023-10-16

在编写C++代码时,我通常首先在头文件中编写完整的'实现'代码,然后需要将实现重构为.cpp文件。

这很好,但我发现这个过程很费力,但除此之外很容易,所以我想知道是否有任何自动化的方法可以做到这一点?

具体来说,我想将.h中的所有类和函数定义转换为声明,并在新的.cpp文件中声明它们。

我正在使用xcode,但我对任何解决方案都持开放态度。

有懒惰C++,你只写一个.lzz文件,它会为你生成.h和.cpp。

我真的很期待C++模块,你只写.cpp,导入文件是自动生成的。但是,即使Clang已经开始实现模块,我们也将不得不等待几年。以下是一些示例。

您可以使用一些工具,例如 Makeheaders

http://www.hwaci.com/sw/mkhdr/

但总的来说,这些工具并不完整,尤其是满足新的 C++11 文件。

您可能

还对 Eclipse 的函数"Refactor/Toggle 函数"感兴趣。但是,它并不总是正常工作。

C++20 模块基本上为我们做到了这一点

如前所述: https://quuxplusone.github.io/blog/2019/11/07/modular-hello-world/clang 2019-11 实现它:

clang++ -std=c++2a -c helloworld.cpp -Xclang -emit-module-interface -o helloworld.pcm
clang++ -std=c++2a -c -fprebuilt-module-path=. -o helloworld.o helloworld.cpp
clang++ -std=c++2a -fprebuilt-module-path=. -o main.out main.cpp helloworld.o

哪里:

  • helloworld.cpp包含实现
  • helloworld.pcm是一个预编译模块,基本上是从.cpp中自动提取的标头(但采用 clang 内部语言格式),main.cpp使用它而没有.hpp

所以基本上 clang 是工具,因此解析是完美的。