好的,我有一个充满全局变量的头文件。 这是一个示例,实现如何(在.cpp文件中):
extern double event::m_chance = 0.01;
到目前为止没什么特别的。但是当我的代码变得更复杂时,我开始实现#define MASTER_MODE
用于测试目的。
所以现在它看起来像这样:
extern double event::m_chance = MASTER_MODE ? 0.5 : 0.01;
我问自己:这是唯一方式在全局范围内初始化全局变量(有条件)吗? 因为if语句在这里不起作用......一定是,对吧?
//declarations
extern double event::m_chance;
if (MASTER_MODE) { //Error: excepted a declaration
event::m_chance = 0.5;
//other variables should be here
}
else { //nope
event::m_chance = 0.01;
//other variables should be here
}
我只是问自己这是否是其他人在我的位置所做的事情。或者是否有更好的(标准 - 定义)方式来启动它们......(比如制作额外的功能等)。
感谢您的帮助/建议!
答案 0 :(得分:3)
#ifdef MASTER_MODE
extern double event::m_chance = 0.5;
//other variables should be here
#else
extern double event::m_chance = 0.01;
//other variables should be here
#endif
答案 1 :(得分:0)
lambda怎么样?
#include <iostream>
bool some_condition = true;
int some_global = [&]()
{
if (some_condition)
{
return 10;
}
else
{
return 20;
}
}();
int main() {
std::cout << some_global;
}