报错,在函数里面(包括int main函数)extern声明会和定义冲突 下面这种写法就很ok 静态变量的反汇编 #include<iostream> using namespace std; extern int c; int main() { static int c = 1; cout << c << endl; //因为现在编辑器的优化要是没有用这个变量,直接就被忽略了 int d = 2; cout << d << endl; return 0; } 反汇编代码 static定义的变量是有固定地址的