C++对 C 语言以外的语言的外部"C"功能
C++'s extern-"C" functionality to languages other than C
众所周知,将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 链接以外的任何东西。
相关文章:
- 在函数内部的声明中初始化数组,并在外部使用它
- 不同语言中相同代码的不同行为
- 使外部项目可用于find_package CMake
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- C++:来自外部文件的Trivia
- 从函数角度看ID到文件路径的内部与外部映射
- C++:将外部库链接到dll库
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 节俭并发:未解决的外部问题
- 如何在c++中从git建立外部库
- 未解析的外部符号_MsiLocateComponentW@12.
- 如何使用对C函数和类对象的外部调用来处理C++头文件
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 具有外部"c"和程序集的未定义函数
- r语言 - 使用外部 C 库在 Rcpp 中编译C++
- Simulink Coder语言 - 如何将外部代码与模型接口
- C++对 C 语言以外的语言的外部"C"功能
- 在自由函数中定义的类型,可通过自动外部访问.语言错误或功能