gpt4 book ai didi

c++ - 为什么不允许全局命名空间的 block 作用域?

转载 作者:太空宇宙 更新时间:2023-11-04 15:56:01 25 4
gpt4 key购买 nike

我很好奇为什么不允许在任何函数(全局范围内)之外创建 block 范围 {}

我可以做到以下几点:

int main(){

{
int i = 4;
}

//other stuff

}

但不是

{
int i = 4;
}


int main(){
//other stuff
}

在实现编译时断言时,这个问题激起了我的兴趣,为此我创建了一个变量,该变量将在断言逻辑完成后立即销毁(以释放内存)。

最佳答案

I am curious as to why creating a block scope {} outside any function (in global scope) is not permitted.

这将毫无意义且具有误导性。在任何函数外部声明的变量都是静态分配的,因此永远不会超出范围(程序末尾除外)。


编辑:要使变量在程序启动时暂时存在,您可以这样做:

static auto throwaway_name = [] () { MyClass myVar; return 0; } ();

唯一静态分配的是一个int(它可能会被优化掉,我不确定)。

关于c++ - 为什么不允许全局命名空间的 block 作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57829524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com