【发布时间】:2022-01-04 08:01:46
【问题描述】:
GCC中描述file_scope的深度为1,external_scope为0。 我写了一个程序来测试结果。
int main() {
int a;
{
int b;
}
{
int c;
}
if (1) {
int d;
}
}
变量a的深度是2,b和c都是3,但是变量d的深度是5。
为什么变量d的深度不是3或4?
【问题讨论】:
-
什么是可变深度,你是怎么知道的?
-
在 gcc/c/c-decl.c 文件中
-
也许是因为 gcc 的作者发现它对他们的目的很方便。为什么不? if 语句本身 +1,if 内的 then 分支 +1,大括号 +1。这个数字不必反映您为了达到最高级别而展开的范围数。这只是一个实现细节。
标签: c scope declaration