我正在制作一个cpp应用程序。我创建了一个包含许多静态变量的.h文件,比如
namespace MSG {
static const int MSG_TYPE = 1;
// many more here like strings, ints, chars.
}
这会减慢发布时间。
我在很多地方都使用过这些变量。
如何在降低更改代码的工作量的同时提高速度呢?
但是,提高绩效是一个优先事项。答案 0 :(得分:2)
根本问题(假设这真的是什么
放慢你的速度,这让我感到惊讶)就是你
在每个翻译单元中都有一个变量实例
包括标题。对于int
,这可能不是问题,
但如果任何类型有构造函数,它肯定可以
是。通常,除了之外,对于积分常数,你可能
标题中不应包含static
。 (并注意如果
对象本身是const,默认情况下它是静态的。)因此,对于
一个字符串,它应该是:
namespace Msg
{
extern std::string const someMessage;
};
然后在源文件中:
std::string const Msg::someMessage( "whatever" );
(源文件当然应包括标题。)
请注意,即使使用积分常数,也必须小心; 如果使用不会导致rvalue立即左值 转换,您将需要一个实际的数据声明。在每一个 以这种方式使用它的文件,因为每个都有一个实例 文件。
这里可能更好的解决方案是使用类,而不是 而不是命名空间:
class Msg
{
public:
static int const msgType = 1;
static std::string const someMessage;
// ...
};
这确保只有一个实际实例,但仍然如此 允许积分常数作为整数常量 表达式。 (这里也需要一个单一的定义 某处的源文件。)