我知道C中的全局变量有时会有extern关键字.什么是extern变量?宣言是什么样的?它的范围是什么?
这与跨源文件共享变量有关,但这是如何工作的?我在哪里用extern?
考虑一下代码:
#include <stdio.h>
int x;
int main (void)
{ }
Run Code Online (Sandbox Code Playgroud)
的价值x是0里面main.但那是为什么呢?我没有宣布它static.或者假设static它在函数之外?
如果上述情况属实,它是如何与它不同的extern?
在学习C/C++ 中的extern和static变量时,我遇到了这个答案。
也许我遗漏了一些要点,但这个答案引起了我对我的代码的怀疑。
假设我有以下文件:
static int global_foo = -1;
void doSomething(void);
Run Code Online (Sandbox Code Playgroud)
#include "header.h"
void doSomething(void) {
global_foo = 1;
}
Run Code Online (Sandbox Code Playgroud)
#include "header.h"
int main(void) {
doSomething();
printf("%d\n", global_foo);
}
Run Code Online (Sandbox Code Playgroud)
main函数中printf的输出到底是什么?我的解释是,由于global_foo被包含两次,因此将有两个不同的global_foo,因此这样的一个更改只会影响global_foo其所属文件的 。