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

时间:2016-01-16 09:21:24

标签: c++ compilation include dependencies

globals.h

#define Id1 1
#define Id2 2

factory.h

Item* makeItem(int id);

在globals.h中包含新ID需要重新编译使用旧ID的makeItem文件吗?

另外如何知道哪些更改需要重新编译或重新链接家属?

2 个答案:

答案 0 :(得分:2)

对globals.h的任何更改都需要重新编译#include globals.h的文件或包含包含globals.h的头文件。因此,如果您的ID列表经常更改,并且许多文件依赖于它,并且您的项目很大,那么这可能会造成麻烦。

解决这个问题的方法是将globals.h拆分为不同的h文件,这样每个h文件只能用于项目的相对较小的部分。然后,其中一个的更改不需要太多重新编译。

如果您这样做,您通常会面临保持所有ID唯一的挑战。如果它们在不同的头文件中定义,那么在一个文件中进行更改的开发人员可能不知道她正在与另一个文件中定义的ID发生冲突。对此的一个解决方案是遵循一个记录良好的约定,其中定义了ID的每个h文件都具有相关的ID范围,并且范围不重叠。

答案 1 :(得分:-1)

您可以将所有ID放在char数组中,只需在globals.h中定义char指针char * Id_array,如果包含新ID,只需将其推入ID数组并使Id_array指向您构造的ID数组。