static 变量后跟 extern 在同一个文件中
static variable followed by extern in the same file
以下代码编译和执行都很好。
static int a
之后的 extern int a
语句到底是什么意思?
请注意,如果我在 extern int a
之后写 static int a
,编译器会抛出错误 tests.cpp:6: error: a was declared extern and later static
#include<iostream>
//#include "testh.h"
using namespace std;
static int a;
extern int a;
int main()
{
int a;
a=3;
cout<<a<<endl;
cout<<::a<<endl;
return 0;
}
您可以声明变量 static
然后 extern
,但不能先 extern
然后 static
。结果就是全局a
还是有内部链接的。在语言标准文档 [dcl.stc]
节中有一个非常相似的示例(使用 b
作为变量名),说明了这一点。
以下代码编译和执行都很好。
static int a
之后的 extern int a
语句到底是什么意思?
请注意,如果我在 extern int a
之后写 static int a
,编译器会抛出错误 tests.cpp:6: error: a was declared extern and later static
#include<iostream>
//#include "testh.h"
using namespace std;
static int a;
extern int a;
int main()
{
int a;
a=3;
cout<<a<<endl;
cout<<::a<<endl;
return 0;
}
您可以声明变量 static
然后 extern
,但不能先 extern
然后 static
。结果就是全局a
还是有内部链接的。在语言标准文档 [dcl.stc]
节中有一个非常相似的示例(使用 b
作为变量名),说明了这一点。