首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拆分.cpp文件而不更改代码

拆分.cpp文件而不更改代码
EN

Stack Overflow用户
提问于 2012-06-04 05:33:46
回答 3查看 4K关注 0票数 4

我有一个变得相当大的.cpp,为了便于管理,我想将它拆分为几个文件。但是,有许多全局变量,我希望避免管理跨不同文件的一堆外部声明的维护工作。有没有办法让多个.cpp文件作为一个文件?从本质上讲,我希望有一种方法来划分代码,而不是让编译器识别这种划分。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-04 05:37:23

当然,您总是可以将各种CPP文件#include到一个主文件中,这是编译器可以看到的文件。然而,这是一个非常糟糕的想法,你最终会遇到比正确重构文件更令人头疼的问题。

票数 5
EN

Stack Overflow用户

发布于 2012-06-04 05:48:50

有没有办法让多个.cpp文件作为一个文件?

是。这就是#include的定义。当您对一个文件执行#include操作时,需要对包含的文件进行文本替换,而不是#include指令。因此,多个包含的文件一起作用以形成一个翻译单元。

在您的情况下,将文件切成几个比特。准确地执行此操作--不要添加或删减任何文本行。不要添加标题保护或其他任何内容。你几乎可以在任何方便的地方破坏你的文件。限制是:换行符不能出现在注释中,也不能出现在字符串中,而且必须出现在逻辑行的末尾。

根据一些约定命名新创建的局部文件。它们不是完全形式的转换单元,所以不要将它们命名为*.cpp。它们不是正确的头文件,所以不要将它们命名为*.h。相反,它们是部分完整的翻译单元。也许您可以将它们命名为*.pcpp

至于基名,请选择原始文件名,后缀按顺序编号:MyProg01.pcppMyProg02.pcpp等。

最后,用一系列#include语句替换原始文件:

代码语言:javascript
运行
复制
#include "MyProg01.pcpp"
#include "MyProg02.pcpp"
#include "MyProg03.pcpp"
票数 6
EN

Stack Overflow用户

发布于 2012-06-04 05:49:16

虽然您可以在许多cpp文件中声明相同的全局变量集,但在编译器编译每个文件时,您将获得每个全局变量的单独实例,然后这些文件在组合时将无法链接。

唯一的答案是把你所有的全局变量放在它们自己的文件中,然后将它们剪切并粘贴到一个包含外部声明的头文件中(这很容易自动化,但我发现使用箭头键在它们前面粘贴' extern‘是快速而简单的)。

你可以重构所有的东西,但通常不值得花这么大的力气(除非你因为其他原因而需要改变一些东西)。

您可以尝试拆分文件,然后使用编译器告诉您每个新文件需要哪些全局变量,然后将这些全局变量直接重新引入到每个文件中,分别保留真正的全局变量。

如果您不想这样做,只需#include cpp文件即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10874112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档