另一个与 FORTRAN/C 相关的问题,
如果这是我的 Fortran
PROGRAM test
IMPLICIT NONE
EXTERNAL pass
CALL ccode(pass)
END PROGRAM
其中 pass 指的是另一个子例程
c代码
void ccode_(what should go here?)
{
}
最佳答案
您需要知道pass
是什么。具体来说:
- 它需要什么参数?
- 它的返回值类型是什么?
- 它的调用约定是什么?
一旦了解了这一点,您就可以相应地编写 C 代码。因此,假设它是一个使用 cdecl
调用约定接收 double
并返回 int
的函数,那么您可以像这样声明它:
typedef int (__cdecl *FuncType)(double);
void ccode_(FuncType)
{
int retval = func(42.0);
}
关于c - 将 FORTRAN EXTERNAL 数据类型传递给 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26783190/