问如何从 C 调用 FORTRAN(C++、BASIC、Pascal、Ada、LISP)函数?(反之亦然?)
答答案完全取决于机器和所使用的各种编译器的特定调用约定,而且根本不可能实现。请非常仔细地阅读您的编译器文档;有时会有一个“混合语言编程指南”,尽管传递参数和确保正确的运行时启动的技术通常很晦涩。除了正确安排调用约定之外,您可能还需要在各种语言之间协调,以使聚合数据结构声明兼容。
有关 FORTRAN,您可以在 Glenn Geers 编写的 FORT.gz 中找到更多信息,可通过匿名 ftp 从 suphys.physics.su.oz.au 的 src 目录获取。Burkhard Burow 的头文件cfortran.h在许多流行的机器上简化了 C/FORTRAN 的接口。可通过匿名 ftp 从 zebra.desy.de 或 http://www-zeus.desy.de/~burow 获取。
在 C++ 中,外部函数声明中的“C”修饰符表示该函数将使用 C 调用约定进行调用。
在 Ada 中,您可以使用Export和Conventionpragmas,以及来自包Interfaces.C的类型,来安排与 C 兼容的调用、参数和数据结构。
参考文献:H&S 第 4.9.8 节,第 106-7 页