一个非常简单的问题:在同一系统上,C语言的
C语言和C++语言标准使用相同的语言来定义基本类型。但是,Fortran 2003明确表示:
int
和C++语言的int
是否是相同的东西?当然,这只是一个理论上的问题。C语言和C++语言标准使用相同的语言来定义基本类型。但是,Fortran 2003明确表示:
use ISO_C_BINDING
integer(kind=c_int) :: i
声明了一个整数类型,它与“伴随的C处理器”上的int
类型兼容,在C++标准中我找不到这样的断言。Fortran提供比C++更强的C互操作性保证似乎非常奇怪!
最接近的是C ++ 11标准的第7.5节[dcl.link]第3段,它规定:
每个实现都应支持与用C编写的函数的链接
但是,对我来说,这个小句子似乎不足以保证基本类型的兼容性。
在C++标准中是否有我忽略的其他语言来保证这一点,还是显然被视为理所当然,没有人费心明确说明呢?
编辑:David Schwartz在评论中指出,我在说“相同的系统”时不够准确。我真正意思是同一“平台”,即硬件、操作系统、系统库等。这当然是ABI问题。在引用的段落中,C++标准似乎想表明您可以使用extern "C"
调用C函数,但我不确定它是否提供了足够的其他保证?
bool
/_Bool
和标准布局结构的问题... - Tristan Brindle