我很好奇为什么{}不允许在任何函数(在全局范围内)之外创建块范围。
我可以执行以下操作:
int main(){
{
int i = 4;
}
//other stuff
}
Run Code Online (Sandbox Code Playgroud)
但不是
{
int i = 4;
}
int main(){
//other stuff
}
Run Code Online (Sandbox Code Playgroud)
这个问题激起了我在实现编译时声明时的兴趣,为此我创建了一个变量,在声明逻辑完成后(释放内存)将立即销毁该变量。
我很好奇为什么不允许在任何函数(在全局范围内)之外创建块范围{}。
这将是毫无意义和误导的。在任何函数外部声明的变量都是静态分配的,因此永远不会超出范围(在程序末尾除外)。
编辑:要使变量在程序启动时暂时存在,可以执行以下操作:
static auto throwaway_name = [] () { MyClass myVar; return 0; } ();
Run Code Online (Sandbox Code Playgroud)
静态分配的唯一一件事是int(可能无法优化,我不确定)。
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |