Chi*_*hak 4 c global external extern
我想弄清楚如果在某些程序中我们会有这样的情况会发生什么:
extern int x;
void foo(){...}
void bar(){...}
void main(){
foo();
bar();
}
int x=0;
Run Code Online (Sandbox Code Playgroud)
那么假设会发生什么?为什么允许两个具有相同名称的变量?它们是否不同?
它们不是"两个"变量.他们是一样的.
extern int x;
Run Code Online (Sandbox Code Playgroud)
是宣言x.
和
int x=0;
Run Code Online (Sandbox Code Playgroud)
提供了定义x.这非常好,有效.
你可以有多个声明,例如:
extern int x;
extern int x;
Run Code Online (Sandbox Code Playgroud)
它也会编译.
请注意,当您为同一标识符提供多个声明时,规则有些复杂.请参阅:6.2.2标识符的链接以获取详细信息.有关示例,请参阅m的静态声明遵循非静态声明.