【问题标题】:Function in c++ with extern keyword [duplicate]带有extern关键字的c ++中的函数[重复]
【发布时间】:2018-05-07 06:27:34
【问题描述】:

我正在浏览一个源代码,我发现了这些 sn-ps

extern int main(); main();

还有一个是

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");

上面的代码发生了什么?

edit : 上面的 sn-ps 在 .cpp 文件中。如上所示调用它们,中间没有任何代码。

【问题讨论】:

  • 关于main的第一个sn-p,在C++中自己调用main实际上是无效的。它应该永远由您自己的代码调用。
  • @GauravSehgal 您提供的链接解释了全局变量并在头文件中声明。上面的代码在 .cpp 文件中,我想知道为什么他们以这种方式调用。
  • 能否提供转载的源代码部分,其中使用了它?
  • @karra 是一样的。当涉及编译器时,.h 文件只是 .cpp 文件文本的一部分。见 5.2 翻译阶段
  • 该函数没有“调用”两次,只有一次。第一个是函数的声明,也称为函数原型。需要声明以便编译器知道该函数存在于程序中的某处,因此可以调用它。

标签: c++ extern


【解决方案1】:

第一个 sn-p 在技术上是 UB,因为如果该程序似乎在某处使用外部 C++ 链接 void main() 定义函数。

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_network_device,然后调用该函数。该函数可以在程序的任何编译模块中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多