在 C 中支持和使用 `fortran` 关键字
Support and use of the `fortran` keyword in C
C 标准中定义了一个可选支持的关键字fortran
C99 语言标准,J.5.9 节:
The fortran
function specifier may be used in a function declaration to indicate that calls suitable for FORTRAN should be generated, or that a different representation for the external name is to be generated.
此部分在 C11 标准中保持不变。
这两个标准中的任何其他地方都没有说明这个关键字。本节参考第 6.7.4 节,函数说明符,它看起来就是这样,但唯一的一个是 inline
,所涉及的语言对此进行了调整,如何使用 fortran
是'显而易见。
关键字 是 包含在 "Common Extensions" 部分 (!),因此预计不会得到普遍支持,事实上,它不存在:我的 GCC 副本7.2.0 无法识别。
由于我似乎无法使用它,
a) 如何在 C 代码中使用 fortran
关键字?
b) 什么编译器 support/supported 这个关键字?
DOS/Win16 的 BC4.5 编译器支持所述关键字。它将函数的调用约定更改为 FORTRAN 的调用约定。使用看起来像这样:
extern fortran int FUNCTION(int *a, int *b, int *c);
(在 FORTRAN 中变量通过引用传递)。
您还可以像这样导出要从 FORTRAN 调用的函数:
fortran int FUNCTION2(int *a, int *b, int *c)
{
/* your code here */
}
我实际上用它来调用 QBX (BASIC),它使用几乎完全相同的调用约定。 pascal
关键字更适合这个目的;否则参数倒过来。
C 标准中定义了一个可选支持的关键字fortran
C99 语言标准,J.5.9 节:
The
fortran
function specifier may be used in a function declaration to indicate that calls suitable for FORTRAN should be generated, or that a different representation for the external name is to be generated.
此部分在 C11 标准中保持不变。
这两个标准中的任何其他地方都没有说明这个关键字。本节参考第 6.7.4 节,函数说明符,它看起来就是这样,但唯一的一个是 inline
,所涉及的语言对此进行了调整,如何使用 fortran
是'显而易见。
关键字 是 包含在 "Common Extensions" 部分 (!),因此预计不会得到普遍支持,事实上,它不存在:我的 GCC 副本7.2.0 无法识别。
由于我似乎无法使用它,
a) 如何在 C 代码中使用 fortran
关键字?
b) 什么编译器 support/supported 这个关键字?
DOS/Win16 的 BC4.5 编译器支持所述关键字。它将函数的调用约定更改为 FORTRAN 的调用约定。使用看起来像这样:
extern fortran int FUNCTION(int *a, int *b, int *c);
(在 FORTRAN 中变量通过引用传递)。
您还可以像这样导出要从 FORTRAN 调用的函数:
fortran int FUNCTION2(int *a, int *b, int *c)
{
/* your code here */
}
我实际上用它来调用 QBX (BASIC),它使用几乎完全相同的调用约定。 pascal
关键字更适合这个目的;否则参数倒过来。