c ++全局常量问题

3 c++ constants

我们在一系列文件中定义了这些"实用程序"常量集.问题来自TOO MANY文件包含这些全局常量文件的事实,如果我们向其中一个文件添加常量并尝试构建,它会构建整个库,这需要一个多小时.

任何人都可以为这种方法提出更好的方法吗?非常感谢.

Tod*_*ner 7

首先,如果你直接在头文件中定义它们,我建议改为将它们显示为extern const,然后在cpp文件中定义它们:

//in .hpp:
extern const std::string foo;

//in .cpp:
const std::string foo = "FOO";
Run Code Online (Sandbox Code Playgroud)

这样,至少可以在不重建的情况下更改定义.

其次,检查它们被包括在哪里.如果常量文件包含在低级标题中,是否可以将include移动到cpp?删除它可能会降低耦合,因此不必重建.

第三,分解该文件.我建议映射出你最终想要的结构,开始向新结构添加新常量而不是旧文件.最终(当你确定你有你想要的结构时),将旧文件重构为新结构,并使旧文件包含整个结构.最后,遍历并删除旧文件的所有包含,将它们指向适当的新部分.这将打破重构,所以你不必一次完成所有这一切.

第四,如果头文件发生变化,您可能会欺骗编译器不重建.您必须检查编译器的文档,它可能不安全,所以您偶尔也想添加完整版本.