在头文件中,全局常量可以在单行中声明和(预)定义。
我喜欢这种格式,因为它让我把常量放在一个地方,避免了需要在一个文件中声明常量并在另一个文件中定义常量的情况,有助于提高可读性。但是,当任何翻译单元包含“constants.h”时,它会在每个单元中扩展这些定义。
我的问题是,如果我将“constants.h”包含到许多翻译单元中,并且例如“cursorBitmap”和其他数组常量非常大,那么这会导致显着的开销吗?如果我将其包含到100个单元中,那么我的程序是否会包含100个字符串和数组文字的副本?还是只会复制指针和值?
如果有开销,是否有一种方法可以避免它,而无需分离声明和定义?
(此外,我猜测这种用法中的“static”是多余的,但我仍然喜欢把它放在那里)
// 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个字符串和数组文字的副本?还是只会复制指针和值?
如果有开销,是否有一种方法可以避免它,而无需分离声明和定义?
(此外,我猜测这种用法中的“static”是多余的,但我仍然喜欢把它放在那里)
inline
变量。 - Simple