gpt4 book ai didi

c++ - 使用内联方法和类从 header 创建 .cpp 文件

转载 作者:行者123 更新时间:2023-11-30 05:47:18 29 4
gpt4 key购买 nike

我做了一堆直接实现方法和类的头文件。我知道这不是最好的模式,我这样做主要是因为我懒惰并且以前使用过Java。我从事的项目越来越大,因此编译时间激增,因为 main.cpp 中的每次重新编译都必须重新编译所有类。这是因为类和函数没有任何 .o 文件,所以 #include 预处理器创建了一个包含所有内容的巨大文件。

有没有办法自动将所有这些 header 拆分为 .cpp 和 .h 文件,并将所有函数和类的实现移动到 .cpp 中?

我的解决方案:

我在 java 中创建了一个程序来使用正则表达式“解析”代码以查找函数声明并将函数体保存在 .cpp 文件中以供使用。然后我用 ; 替换了正文,并将函数声明复制到 StringBuilder 中并附加到正文中。为了找到 ClassName:: 声明的类名,我也使用了正则表达式。

我的正则表达式:

函数声明:(?m)(?!.*[\"}])(^.*\\S+ ([a-zA-Z0-9_+\\-=\\/*^\\[\\] ]+)\\s*\\(.*\\)\\s*(const)?\\s*)\\{

人类可读:“不以 } 开头的行,但带有随机类型名称 \\S+ 后跟空格,然后是函数名[a-zA-Z0-9_+\\-=\\/*^\\[\\]]+,一个未定义的参数列表(.* ),一个可选的 const,最后是一个 {

幸运的是,这是我格式化代码的方式 :D

最佳答案

我也讨厌乏味无意义的体力劳动。我所做的是使用 cogapp ,这是一个与语言无关的代码生成器。它摇滚。我为它创建了一个头文件声明生成器,cog_addheaders.py .然后,我只需编写 .cpp 文件、一个初始的、基本为空的 .h 文件和 cogapp,加上我的 cogapp 生成器处理其余部分:-)

对于 staticvirtual,我为 STATICVIRTUAL 添加了宏,它们在.cpp,以及 .h 文件中的 staticvirtual。我已经使用它一段时间了,它 super 简单,我用起来很舒服:-)

这里有一些例子:

关于c++ - 使用内联方法和类从 header 创建 .cpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28619888/

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