gpt4 book ai didi

c++ - 什么是 "extern linkage and with C language linkage"

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:01 24 4
gpt4 key购买 nike

作者在以下段落中对“外部链接”和“C 语言链接”的含义是什么,摘自[1]。

“extern C 声明有两种不同的形式:上面使用的 extern C 和 extern C { … }大括号之间的声明。第一种(内联)形式是具有外部链接和 C 语言链接的声明;第二种仅影响语言链接。因此,以下两个声明是等效的:"

你能进一步详细说明他试图用这个例子解释什么吗?

[1] http://tldp.org/HOWTO/C++-dlopen/thesolution.html

最佳答案

作者所说的与这两行有关:

extern "C" int foo;
extern "C" { int bar; }

foo 是声明但 undefined variable 。它存在于别处。另一方面,bar 既是声明的又是定义的。

将声明视为只是声明某物存在于某处但实际上并没有创建它。因此,定义是声明加上使该事物存在。

后者与 int bar; 完全相同,但将“发布”带有 C 链接的变量。例如,一个函数 int max (int a, int b); 可以在 C 语言链接中发布为 _max_max$$int$int C++ 语言链接(允许多个同名函数)。

请注意,此上下文中的“发布”是函数对链接器的看法,以便您的代码可以链接到它。如果没有 C 语言链接,通常很难将 C 代码与 C++ 库链接起来。

关于c++ - 什么是 "extern linkage and with C language linkage",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com