【发布时间】:2012-05-05 03:22:03
【问题描述】:
以下段落中的“外部链接”和“C语言链接”是什么意思,摘自[1]。
“extern C 声明有两种不同形式:extern C 如上所述,extern C { ... } 声明在大括号之间。第一个(内联)形式是一个声明extern 链接和with C 语言链接;第二个只影响语言链接。因此以下两个声明是等价的:"
您能否进一步详细说明他想用这个例子解释什么?
【问题讨论】:
-
Zack 和 paxdiablo 的答案都很好。您链接到的 dlopen 文档的作者提到 extern "C" 声明可以防止名称修改;更准确地说,它选择 C 样式名称修饰,这取决于您的编译器可能是“无”或可能是“前加下划线”。我在该文档或下面的答案中没有提到的另一件事是“C”链接也与用于函数的调用约定有关,即放置函数的参数的位置(堆栈上的顺序等) ) 以及谁负责清理(调用者/被调用者)。