功能是必需的

the*_*ean 2 c++ c++11

我的问题与具体问题无关.Rather指的是编程风格.
在我读过的所有文章和书中都说如果你真的不需要你就不应该使用全局变量.因此,我更喜欢在全局空间中使用#define而不是const变量类型.但#defines有一个可怕的缺陷不能放在名称空间中.

我经常希望c ++具有允许这种行为的功能,例如名称空间中的#define.

例:

namespace Space
{
replace type variable = constructor(args);
replace type2 variable2(args);
}

void function(type variable);

int main()
{
    function(Space::variable);
}
Run Code Online (Sandbox Code Playgroud)

其中"replace"是该功能的标识符.该类型的变量必须替换为其值编译时间.

我的问题:
1)人们如何在不使用全局常量的情况下实现漂亮和清晰的代码
2)我如何将这个想法建议到c ++标准(可选)
3)这个想法的缺点在哪里(可选)

Jon*_*ely 9

1)人们如何在不使用全局常量的情况下实现漂亮而清晰的代码

只需使用全局常量.宏吮吸.

2)我如何向c ++标准提出这个想法(可选)

别.已经有一个被拒绝的更好的提案.

3)这个想法的缺点在哪里(可选)

宏吮吸.不要像这样使用它们,那么您不需要更改标准.


eca*_*mur 6

您将全局共享状态的一般规则误认为是针对全局变量的规则.由于常量是不可变的,因此它们不构成状态,并且它们使用起来非常安全.相反,规则应该是所有全局变量都应该是const.