gpt4 book ai didi

c++ - C+ +'s extern-"C"对非 C 语言的功能

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:23 25 4
gpt4 key购买 nike

众所周知,对C++函数声明extern "C"使其名称具有C链接,使C代码能够链接。

我的问题是 - 是否有其他编程语言我们可以使 C++ 函数名称链接到某些语言,例如 extern "Lisp"extern "FORTRAN"

如果不是,为什么? "C" 背后的内部结构是什么造成了限制?

有哪些替代方案?

最佳答案

C++ 标准 7.5.2 dcl.link 说:

Linkage between C++ and non-C++ code fragments can be achieved using a linkage-specification:

linkage-specification:
extern string-literal { declaration-seqopt}
extern string-literal declaration

The string-literal indicates the required language linkage. This International Standard specifies the semantics for the string-literals "C" and "C++". Use of a string-literal other than "C" or "C++" is conditionally supported, with implementation-defined semantics. [ Note: Therefore, a linkage-specification with a string literal that is unknown to the implementation requires a diagnostic. —end note ] [ Note: It is recommended that the spelling of the string-literal be taken from the document defining that language. For example, Ada (not ADA) and Fortran or FORTRAN, depending on the vintage. —end note ]

所以原则上,实现者可以选择支持除C和C++以外的其他链接规范。

然而实际上,在所有现代平台上,C 链接是最小的公分母。作为一般规则,如今,除 C 之外的语言的二进制互操作使用 C 链接。在广泛使用的现代平台上,除了 C 和 C++ 链接之外,您将看不到任何东西。

关于c++ - C+ +'s extern-"C"对非 C 语言的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484500/

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