自动将 .h 拆分(重构)为标头和实现 (h+cpp)
Automatically split (refactor) .h into header and implementation (h+cpp)
在编写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 是工具,因此解析是完美的。
相关文章:
- 在 cpp 中最简单的图形实现
- 如何使用 CPP REST SDK 实现 CAS(中央认证服务)?
- 如何制作 cmakelists.txt编译使用在其他地方声明和实现的函数和类的 CPP
- 在 *.cpp 文件中实现的 c++ 函数/方法永远不会内联扩展吗?
- 多文件类实现Cpp
- 如何在.cpp中实现属于非模板类的模板函数
- SystemC:单个 cpp 文件中的多个模块实现
- 在h文件上内联发布版本并在cpp上实现调试版本的函数
- 在 h 和 cpp 文件中单独声明和实现模板有时有效,有时会出现链接器错误
- 从用户定义的头文件调用函数时出现未定义的引用错误,其实现位于.cpp文件中
- 在.cpp文件中实现时访问私有成员
- 在CPP文件中实现非模板类的模板成员
- 在实现(.cpp)文件中不包含相应的头文件(.h)文件仍然编译?
- 覆盖 CPP 中的链接以指向模拟实现
- 将函数及其实现移动到与主文件不同的文件(.hpp 和 .cpp)时,性能会受到很大影响
- openssl rc4 命令行加密和 cpp 文件实现 rc4 之间的区别
- 在C++中,我不能在不分离标头和 cpp 的情况下实现此类吗?
- 跳过 cpp 中的列表实现
- PFArrayD.cpp实现复制构造函数
- 如何在CPP实现中使用MT(或类似的)RNG算法