【发布时间】:2014-02-24 09:49:18
【问题描述】:
众所周知,将extern "C" 声明为C++ 函数会使其名称具有C 链接,从而使C 代码能够链接。
我的问题是 - 我们是否可以让 C++ 函数名称链接到其他编程语言,例如 extern "Lisp" 或 extern "FORTRAN"?
如果不是,为什么? "C" 背后的内部结构是什么,造成了限制?
有什么选择?
【问题讨论】:
-
不,因为几乎所有其他内容都与 C 及其调用约定兼容。
-
还有外部帕斯卡...
-
"C" 是C++ 标准要求的唯一这样的链接,但编译器可以免费提供更多;这就是为什么它是一个字符串常量。 extern "FORTRAN" 对于同时具有 C++ 和 FORTRAN 前端的编译器非常有意义。如果仅仅是因为 Lisp 环境往往是它自己的整体,我不会期望看到 extern "Lisp"。
-
语言链接(extern "C++"、extern "C"、extern "FORTRAN")与调用约定(stdcall、fastcall 等)不同,后者被标记为重复.