我正在编写代码,将使用Fortran的C互操作机制(在Fortran 2003中引入并在更新版本的gfortran和ifort中实现)从Fortran调用一个C函数。
这个答案几乎是我需要的,但我不能很好地理解针对以下C函数应该在Fortran中使用哪种接口声明:
int use_array(int n, char * array[]){
int i;
for(i=0; i<n; i++){
printf("Item %d = %s\n",i,array[i]);
}
return n;
}
我不清楚Fortran端接口的声明应该是什么:
interface
function use_array(n, x) bind(C)
use iso_c_binding
integer (c_int) use_array
integer (c_int), value :: n
character(c_char) WHAT_SHOULD_GO_HERE? :: x
end function use_array
end interface
我知道我也必须处理空终止问题。