C ++将一个函数标记为静态的一次吗?

时间:2018-03-24 23:32:21

标签: c++ static

如果你在.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
}

1 个答案:

答案 0 :(得分:2)

[basic.link] / 3

  

具有命名空间作用域(6.3.6)的名称具有内部链接,如果它是...的名称...显式声明的变量,函数或函数模板static

[over.dcl] / 1

  

如果两个函数声明属于同一范围,则它们引用相同的函数   具有等效的参数声明(16.1)。 ...

将这些放在一起,foo的第二个声明只是重新声明之前已经声明过的函数,并且该函数已经被赋予内部链接。所以这两个声明声明了相同的函数,并且该函数具有内部链接(“静态”)。