包含新 ID 是否需要重新编译
Will including new IDs require recompile?
globals.h
#define Id1 1
#define Id2 2
工厂.h
Item* makeItem(int id);
在globals.h中包含新ID是否需要重新编译使用旧ID makeItem
的文件?
另外,如何知道哪些更改需要重新编译或重新链接依赖项?
对 globals.h 的任何更改都需要重新编译 #include globals.h 或包含包含 globals.h 的头文件的文件。因此,如果您的 ID 列表经常更改,并且许多文件依赖于它,并且您的项目很大,这可能会变得令人讨厌。
一种方法是将 globals.h 拆分为不同的 h 文件,以便每个 h 文件仅由项目中相对较小的部分使用。然后,对其中一个的更改将不需要太多的重新编译。
如果这样做,您通常会面临保持所有 ID 唯一的挑战。如果它们在不同的头文件中定义,则在一个文件中进行更改的开发人员可能不知道她正在导致与另一个文件中定义的 ID 发生冲突。对此的一种解决方案是遵循一个有据可查的约定,在该约定中,定义 ID 的每个 h 文件都有一个关联的 ID 范围,并且范围不重叠。
您可以将所有ID放在一个char数组中,只需在globals.h中定义char指针char*Id_array,如果您包含新的ID,只需将其推送到ID数组中,并Id_array指向您构造的ID数组。
相关文章:
- 使用 MINGW gcc 编译时,不会为 std::string 调用重载的新运算符
- 如何编译:Mac上的Synergy(2017年的新工具链)
- 如何编译和运行一个新的 C++ Actor 框架项目?
- C++编译新的警告过滤器
- 每次都构建(make)lib,只有在lib较新时才重新编译项目
- 如何创建指向派生类的新指针,该派生类在C++编译时未知
- 如何在不退出和失去断点的情况下重新加载重新编译的二进制文件
- 在编译时将整数和分数部分宏组合成一个新的宏或双精度
- C++运算符新重载、编译错误
- 在新OSX上编译旧碳应用
- 为什么G 5.4不能编译此编译时质数代码
- 代码块在尝试编译或创建新文件时出现"An assertion failed!"错误
- 在新的Visual Studio项目中包含任何Eigen 3.3.1文件将无法编译
- RCpp:如何在不重新启动R的情况下重新加载重新编译的C++代码
- 新安装的MinGW问题与编译和可执行文件
- 为什么要编译?(编译是否忽略未包含的 h 文件?
- 高级C和C++编译:无法编译书中提到的示例程序
- 在不同的编译单元中使用不同的编译标志编译相同的头
- 在cygwin中编译新的mingw二进制文件
- 使用boost库编译预编译头文件需要很长时间