包含新 ID 是否需要重新编译

Will including new IDs require recompile?

本文关键字:编译 新编译 ID 是否 包含新      更新时间:2023-10-16

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数组。