win*_*all 3 c static declaration call extern
在C中,当在函数上声明extern
或static
说明符时,正确的语法用法是什么 - 仅在声明时?在定义?都?变量是一样的吗?
谢谢!
声明一个extern
函数:
该关键字extern
只应在声明(未定义)函数时使用.注意默认情况下函数具有外部链接,因此extern
函数声明中的关键字是多余的.
extern void doSomething();
Run Code Online (Sandbox Code Playgroud)
定义一个extern
函数:
不应使用extern
关键字指定函数定义.该定义可以在另一个cpp文件中.
void doSomething()
{
}
Run Code Online (Sandbox Code Playgroud)
声明static
函数:函数
将static
函数的使用限制为声明它的转换单元.您需要在声明时指定关键字.
static void doSomething();
Run Code Online (Sandbox Code Playgroud)
定义static
函数:
函数定义需要在同一个TU中static
定义.在定义关键字时不需要指定关键字.
void doSomething()
{
}
Run Code Online (Sandbox Code Playgroud)
使用extern
变量:将变量
声明为extern
要在不同的转换单元之间共享相同的全局变量.
您需要使用extern
关键字声明变量,而需要在一个且只有一个cpp文件中定义它.
file1.h
extern int i;
Run Code Online (Sandbox Code Playgroud)
file1.cpp
#include"file1.h"
int i = 10;
Run Code Online (Sandbox Code Playgroud)
file2.cpp
#include "file1.h"
int main()
{
i = 40;
return 0;
}
Run Code Online (Sandbox Code Playgroud)