C++ c+中的函数+;使用extern关键字

C++ c+中的函数+;使用extern关键字,c++,extern,C++,Extern,我正在浏览一段源代码,发现了这些代码片段 extern int main(); main() 还有一个是 extern void创建网络设备(int N,const char*route,const char*ip); 创建网络设备(0,“10.0.0.0/24”,“10.0.0.1”) 上面的代码中发生了什么 编辑:以上代码段位于.cpp文件中。在上面没有任何代码的情况下调用它们。< p>第一个代码段在技术上是UB,因为如果程序似乎用外部的C++链接定义函数>空>主()/某处。p> exter

我正在浏览一段源代码,发现了这些代码片段

extern int main();
main()

还有一个是

extern void创建网络设备(int N,const char*route,const char*ip);
创建网络设备(0,“10.0.0.0/24”,“10.0.0.1”)

上面的代码中发生了什么


编辑:以上代码段位于.cpp文件中。在上面没有任何代码的情况下调用它们。

< p>第一个代码段在技术上是UB,因为如果程序似乎用外部的C++链接定义函数>空>主()/<代码>某处。p>
extern void create_network_device(int N, const char* route, const char* ip);
 create_network_device(0, "10.0.0.0/24", "10.0.0.1");

extern
开头的行声明带有外部链接的函数
create\u network\u device
,然后调用该函数。该函数可以在任何编译程序模块中。

关于第一个代码段<代码>主< /代码>,在C++中,实际上调用“<代码>主< /代码>”本身无效。您自己的代码永远不能调用它。@GauravSehgal您提供的链接解释了全局变量并在头文件中声明。上面的代码在.cpp文件中,我想知道他们为什么以这种方式调用。你能提供使用它的复制源代码部分吗?@karra这是一样的。就编译器而言,h文件只是.cpp文件文本的一部分。参见5.2翻译的阶段该函数没有“调用”两次,只有一次。第一个是函数的声明,也称为函数原型。需要声明,以便编译器知道函数存在于程序中的某个位置,从而可以调用它。