【发布时间】:2012-03-27 19:26:13
【问题描述】:
我有一大堆常量,我想在代码的不同部分访问它们,但我希望能够轻松访问它们:
static const bool doX = true;
static const bool doY = false;
static const int maxNumX = 5;
等等。
所以我创建了一个名为“constants.h”的文件,并将它们全部粘贴在那里,并将其#included 到任何需要知道常量的文件中。
问题是,这对于编译时间来说很糟糕,因为每次我更改一个常量时,都必须重建 constants.h 引用的所有文件。 (另外,据我了解,因为它们是静态的,所以每次我在新的 .cpp 中包含 constants.h 时,我都会在代码中生成一份 doX/doY/maxNumX 的副本,从而导致编译后的千字节浪费空间EXE——有什么办法可以看到吗?)。
所以,我想要一个解决方案。如果可能的话,不是“仅在使用它们的文件中声明常量”。
有什么建议吗?
【问题讨论】:
-
首先:哦,不,几KB!其次:编译器几乎肯定会将它们折叠成一个常量,即使它没有从最终的可执行文件中完全删除。
-
你为什么认为有物理副本?除非需要物理位置(例如获取变量的地址),否则编译器可以很高兴地优化它。
-
如果你想让它们折叠起来,编译器需要在编译时知道每个常量的值
-
你能想象作为一名 Microsoft 程序员,因为
Windows.h的某些变化而不得不花一天时间重新编译吗?