抱歉,我的英文不太好。但我已经准备了一些示例,以便更清楚地表达我的问题。
a.cpp
a.cpp
#include <iostream>
using namespace std;
void funcfoo(){
cout << "test only" << endl;
}
int varfoo = 10;
b.cpp
#include <iostream>
using namespace std;
extern void funcfoo();
extern int varfoo;
int main(){
funcfoo();
cout << varfoo;
return 0;
}
然后我这样编译它:“cl b.cpp a.cpp”
我的问题是,为什么当我在void funcfoo()前面删除"extern"关键字时,它可以正常工作,但是当我在int var foo前面删除"extern"关键字时会出错?