int a;//1
int main()
{
int a;//2
}
如3.4 / 1所述:
名称查找规则统一适用于所有名称(包括 typedef-names(7.1.3),namespace-names(7.3)和class-names(9.1))
因此,对于//2
声明,将应用名称查找。会找到什么名字?
答案 0 :(得分:1)
会找到什么名字?
唯一可能的是声明区域,以检查a
是否未被无效重新声明。显然什么都没有找到。
此外,在声明名称时,没有(不合格的)名称查找,而是在使用它们时。标准没有说明要声明的名称的非限定名称查找,而是针对特定上下文中使用的名称,例如名称作为函数调用的后缀表达式。特别是,声明的名称必须满足某些条件,无论它们是本地的,在类中还是在命名空间范围内;这篇文章很好地列出了所有内容。