我想了解C++中的存储类说明符。我有两个例子。在C++中给定的相同范围内声明相同的变量名称
这里,在给定的相同范围内,声明相同的变量名称。
情况1:
#include <iostream>
static int i;
extern int i;
int main() {
std::cout<<i<<std::endl;
return 0;
}
输出:
0
情况2:
#include <iostream>
extern int i;
static int i;
int main() {
std::cout<<i<<std::endl;
return 0;
}
获得一个错误:
prog.cpp:4:12: error: 'i' was declared 'extern' and later 'static' [-fpermissive]
static int i;
^
prog.cpp:3:12: note: previous declaration of 'i'
extern int i;
为什么第一个案件工作正常,而第二个案件给出错误?
看起来更像是C++ - 你确定你有正确的标签吗? –