【发布时间】:2015-11-21 15:28:53
【问题描述】:
示例代码如下,'a'都是文件范围:
1 ...
2 int a;
3 int a;
4 ... // which 'a' is visible?
我知道 'a' 的两个声明是针对同一个对象的。但是每个标识符都有一个范围,两个“a”的范围应该在第 4 行重叠,哪个是可见的?如果第二个 'a' 只可见,是否意味着这种情况如下:
{
int a;
{
int a; // the scope of the first 'a' is hidden
}
}
谢谢
【问题讨论】:
-
我遗漏了一些东西,你不能重新定义同一个变量。
-
@terencehill: 1) 在文件范围内,这些是暂定定义,因此首先声明,所以你可以。 2)在嵌套范围内,您可以很好地定义相同的名称。但是正确配置的编译器应该警告在外部范围内隐藏名称。
-
@Olaf 谢谢,我的疑惑只有 1)。