Ref*_*ion 5 c++ linkage extern-c
众所周知,extern "C"对C ++函数的声明使它的名称具有C链接,从而使C代码可以链接。
我的问题是-是否可以使C ++函数名称链接到其他编程语言,例如extern "Lisp"or extern "FORTRAN"?
如果没有,为什么?构成"C"限制的背后的内部结构是什么?
有哪些选择?
C++ 标准 7.5.2 dcl.link 规定:
\n\n\n\n\nC++ 和非 C++ 代码片段之间的链接可以使用链接规范来实现:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nlinkage-specification:\n extern string-literal { declaration-seqopt}\n extern string-literal declaration\n字符串文字表示所需的语言链接。此国际标准指定了字符串文字“C”和“C++”的语义。有条件地支持使用除“C”或“C++”之外的字符串文字,并具有实现定义的语义。[ 注意:\n 因此,具有实现未知的字符串文字的链接规范需要进行诊断。\xe2\x80\x94end note ] [\n 注意:建议从定义该语言的文档中获取字符串文字的拼写。例如,Ada(不是 ADA)和 Fortran 或 FORTRAN,具体取决于年份。\xe2\x80\x94结束注]
\n
因此原则上,实现者可以选择支持除C和C++之外的其他链接规范。
\n\n然而实际上,在所有现代平台上,C 连接是最低的共同点。作为一般规则,如今,除 C 之外的语言的二进制互操作都使用 C 链接。在广泛使用的现代平台上,除了 C 和 C++ 链接之外,您不会看到任何其他内容。
\n| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |