从ISO标准草案中:§3.0/9
:
n3234说:
有人可以举例说明这一点吗?
那句话实际上是在说什么?有人可以从程序上证明这一点吗?
最佳答案
当然!这就是说,如果您有多个源文件(翻译单元)都使用相同的名称(例如,变量,类或函数的名称),那么这些不同的文件可能正在谈论相同的变量,类或函数,假设该实体的声明方式使其在不同文件中可见(即,取决于其链接)。
例如,如果我有此文件:
A.cpp:
int globalInt;
int main() {
globalInt = 137;
}
这是这里:
B.cpp:
extern int globalInt;
void foo() {
globalInt = 42;
}
然后,在这两个文件中,名称
globalInt
指的是A.cpp中定义的全局int
变量globalInt
。这就是这句话的全部内容。但是请注意,如果我声明的
globalInt
没有外部链接,那么这两个文件将讨论不同的变量。例如,在这种情况下:C.cpp:
static int globalInt;
int main() {
globalInt = 137;
}
D.cpp:
static int globalInt;
void foo() {
globalInt = 42;
}
现在,尽管C.cpp中引用的
globalInt
变量具有相同的名称,但它与D.cpp中的ojit_code变量不同。希望这可以帮助!