15

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

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

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

我正在使用 xcode,但我愿意接受任何解决方案。

4

4 回答 4

9

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

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

于 2012-06-25T06:32:55.007 回答
1

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

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

但总的来说,这些工具并不完整,尤其是遇到新的 c++11 文件。

于 2012-06-25T06:35:43.397 回答
1

您可能还对 Eclipse 的功能“重构/切换功能”感兴趣。然而,它并不总是正常工作。

于 2014-02-07T12:08:11.933 回答
0

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是工具,因此解析是完美的。

于 2020-05-13T17:37:01.767 回答