拆分.cpp文件而不更改代码
Splitting .cpp files without code changes
我有一个.cpp变得相当大,为了便于管理,我想把它分成几个文件。但是,有许多全局变量,我想避免跨不同文件管理一堆 extern 声明的维护。有没有办法让多个.cpp文件充当单个文件?从本质上讲,我想要一种方法来划分代码,而不会被编译器识别。
有没有办法让多个.cpp文件充当单个文件?
是的。这就是#include
的定义。#include
文件时,将用文本替换包含的文件来代替 #include
指令。因此,多个包含的文件共同作用以形成一个翻译单元。
在您的情况下,将文件切成几个位。完全这样做 - 不要添加或减损任何文本行。不要添加标题护罩或其他任何东西。您几乎可以在任何方便的位置破坏文件。限制是:中断不能出现在注释内,也不能出现在字符串内,并且必须发生在逻辑行的末尾。
根据某些约定命名新创建的部分文件。它们不是完全格式的翻译单元,因此不要将它们命名为 *.cpp
。它们不是正确的头文件,因此不要将它们命名为 *.h
。相反,它们是部分完整的翻译单元。也许你可以把它们命名为*.pcpp
.
至于基本名称,请选择原始文件名,并带有顺序编号的后缀:MyProg01.pcpp
、MyProg02.pcpp
等。
最后,将原始文件替换为一系列#include
语句:
#include "MyProg01.pcpp"
#include "MyProg02.pcpp"
#include "MyProg03.pcpp"
当然,您始终可以将各种 CPP 文件 #include 到一个主文件中,这是编译器看到的那个。不过,这是一个非常糟糕的主意,您最终会陷入比正确重构文件更糟糕的头痛。
虽然您可以在许多 cpp 文件中声明相同的全局变量集,但当编译器编译每个文件时,您将获得每个全局变量的单独实例,然后当它们组合时
,这些全局变量将无法链接。唯一的答案是将所有全局变量放在它们自己的文件中,然后将它们剪切并粘贴到包含 extern 声明的头文件中(这可以很容易地自动化,但我发现使用箭头键将"extern"粘贴到它们前面是快速而简单的)。
你可以重构所有内容,但通常不值得付出努力(除非你出于其他原因需要更改某些内容)。
您可以尝试拆分文件,然后使用编译器告诉您每个新文件需要哪些全局变量,并将这些全局变量直接重新引入每个文件,分别保留真正的全局变量。
如果您不想这样做,只需 #include cpp 文件即可。
- C++代码以测试另一个.cpp如果可以编译它
- C++(.cpp文件和.h文件)拆分代码并添加一个函数,提取 - 这很容易吗?
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 如何将代码划分为多个.cpp文件 C++.
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- 如何将默认代码添加到我在 vim 中打开的每个 cpp 文件?
- 无法使用犰狳运行编译的 cpp 代码,因为 dyld:库未加载
- Windows Toast 通知不适用于 MS CPP 示例代码
- 如何大致将 cpp 代码结构转换为 python
- 如何检测 cpp 代码中的 openvino 设备
- cpp / c ++中的grpc客户端代码,元数据x-api-key/x-goog-api-key不起作用,给了我语音A
- 使用指针编译代码后,.cpp文件将变为随机字符
- 在cpp中使用boost-python的python代码是否进行动态内存分配
- Cpp代码故障(显示意外数字)
- CPP代码中出现FileNotFound异常
- 为什么代码会崩溃?(在CPP中)
- 在.cpp文件中定义方法而不是在 C++ 的 .h 文件中定义方法时,如何提高代码的性能?
- 如何使用 AIDEL-CPP 生成 .aidl 到 C++ 代码
- 代码块始终在项目中运行 main.cpp
- CPP DLL 自定义操作代码在安装过程中未执行