是因为静态函数隐藏了全局函数吗s2.cpp里#include iostreamusing namespace stdvoid ex()extern void
是因为静态函数隐藏了全局函数吗
s2.cpp里
#include <iostream>
using namespace std;
void ex();
extern void sta();
void ex()
{
cout << "ex()" << endl;
sta();
}
static void sta()
{
cout << "static::sta()" << endl;
}
s1.cpp里
#include <iostream>
using namespace std;
extern void ex();
void sta()
{
cout << "::sta()" << endl;
}
int main()
{
ex();
sta();
system("pause");
return 0;
}
运行结果是
ex()
static::sta()
::sta()
可见ex()函数中总是调用的是static sta(),怎样调用全局函数sta呢
[解决办法]
没有编写类,为什么要使用静态函数?
[解决办法]
你在s1.cpp中都没有去包含引用s2.cpp这个文件。。。什么全局不全局。。。
[解决办法]
调用前加::即可调全局的
另外static函数是普遍存在的,以表明该函数只可以被本CPP的函数调用
[解决办法]
[解决办法]
楼上说得有道理,你好像也清楚了
[解决办法]
你把s1.cpp中void sta()的声明定义删掉,你看看,会不会出错,不引用他的头文件怎么可能能用他文件中的函数呢?出发用extern声明的
[解决办法]
[解决办法]
静态函数只能在本文件内有效,并只能在本文件中使用,调用。出了文件就是未定义的吧,无效了。
