C++对 C 语言以外的语言的外部"C"功能

C++'s extern-"C" functionality to languages other than C

本文关键字:语言 外部 功能 C++      更新时间:2023-10-16

众所周知,将extern "C"宣布为C 函数使其名称具有C链接,使C代码链接到链接。

我的问题是 - 我们可以使C 函数名称具有链接,例如extern "Lisp"extern "FORTRAN"

如果不是,为什么?"C"背后的内部结构是什么?

有什么选择?

C 标准,7.5.2 dcl.link,说:

C 和非C 代码片段之间的链接可以使用 链接规范:

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

字符串标准指示所需的语言链接。这 国际标准指定弦线的语义 " C"answers" C "。使用" C"或" C "以外的其他字符串使用 有条件地支持实施定义的语义。[ 笔记: 因此,使用字符串字面的链接规范为 实施未知需要诊断。 - 末尾注] [ 注意:建议字符串的拼写be 取自定义该语言的文档。例如,ada(不是 ADA)和Fortran或Fortran,具体取决于复古。 - 末尾注]

因此,原则上,实施者可以选择支持其他链接规格以外的其他链接规格。

实际上,在所有现代平台上,c链接是最低的共同点。通常,如今,除C以外的其他语言使用C链接。在广泛使用的现代平台上,您将看不到C和C 链接以外的任何东西。