Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么从C+;中的其他文件中使用全局变量时,需要extern来正向声明全局变量,而函数不需要extern+;_C++_Global Variables_Extern_Linkage - Fatal编程技术网

C++ 为什么从C+;中的其他文件中使用全局变量时,需要extern来正向声明全局变量,而函数不需要extern+;

C++ 为什么从C+;中的其他文件中使用全局变量时,需要extern来正向声明全局变量,而函数不需要extern+;,c++,global-variables,extern,linkage,C++,Global Variables,Extern,Linkage,据我所知,全局非常量变量和函数默认都有外部链接。因此,在转发声明的帮助下,它们可以从其他文件中使用。例如: int myNum{888}; int getAnInt() { 返回999; } #包括 extern int myNum;//“extern”关键字是必需的。 int getanit();//“extern”关键字不是必需的。 int main() { std::cout因为 int getAnInt(); 及 即括号本身,因此不需要像extern这样的标记来区分两者 特别是

据我所知,全局非常量变量和函数默认都有外部链接。因此,在转发声明的帮助下,它们可以从其他文件中使用。例如:

int myNum{888};
int getAnInt()
{
返回999;
}

#包括
extern int myNum;//“extern”关键字是必需的。
int getanit();//“extern”关键字不是必需的。
int main()
{

std::cout因为

int getAnInt(); 

即括号本身,因此不需要像
extern
这样的标记来区分两者


特别是,前者是一个声明,它只声明
getanit
存在并返回
int
等,而后者给出它的定义。

因为
extern
将变量定义转换为声明,而
int getanit();
已经是一个声明。您可以有多个声明(只要它们相同),但每个实体只有一个定义。
int getAnInt(); 
int getAnInt() { ... }