在头文件中,可以在一行中声明和(预)定义全局常量.
// constants.h namespace Constant{ static const unsigned int framerate = 60; static const char * const windowName = "Test"; static const unsigned char * const cursorBitmap = { lots of data }; }
我喜欢这种格式,因为它允许我将常量保存在一个位置,并且避免需要在一个文件中声明常量并在另一个文件中定义它,这有助于提高可读性.constants.h
但是,当任何翻译单元包括时,它会按单位扩展这些定义.
我的问题是,如果我包含constants.h
在许多翻译单元中,这会导致显着的开销,例如,cursorBitmap
其他数组常量是否非常大?如果我将它包含在100个单元中,我的程序是否包含每个字符串和数组文字的100个副本?或者只会复制指针和值?
如果有开销,有没有办法可以避免它而不需要单独声明和定义?
(我也猜测'静态'在这个用法中是多余的,但我还是喜欢把它放在那里)