如果你在.cpp文件的开头定义了一个函数,并在main函数之后实现,那么在其中一个函数中使用static就足够了吗?
#include <iostream>
static void foo(); //define func
int main()
{
foo();
return 0;
}
void foo() //do we need static here again or we can omit it?
{
//implementations
}
答案 0 :(得分:2)
[basic.link] / 3
具有命名空间作用域(6.3.6)的名称具有内部链接,如果它是...的名称...显式声明的变量,函数或函数模板
static
[over.dcl] / 1
如果两个函数声明属于同一范围,则它们引用相同的函数 具有等效的参数声明(16.1)。 ...
将这些放在一起,foo
的第二个声明只是重新声明之前已经声明过的函数,并且该函数已经被赋予内部链接。所以这两个声明声明了相同的函数,并且该函数具有内部链接(“静态”)。