Tag: 推迟

使用延迟形状数组从C调用Fortran

是否可以从C / C ++调用Fortran子例程,其中一个Fortran参数是延迟形状数组? (希望我正确使用“延迟形状”一词。) 在下面的示例中, subr1()使用explicit-shape,并且工作正常,但subr2()使用deferred-shape并导致段错误。 这个问题表明需要一个显式接口来从另一个Fortran子例程调用subr2() ,但是我试图从C调用。这样做是不可能的吗? 在真正的问题中,数组的长度会更复杂 – 这就是为什么在理想的世界中,我想使用延迟形状的版本。 (当然,在一个理想的世界里,我根本不会混合使用Fortran和C.) test_array_c.c #include extern void subr1_(int*, int*); extern void subr2_(int*, int*); int main(int argc, char **argv){ int N,i; int *data; // create an array N=3; data=(int*)malloc(N*sizeof(int)); for (i=0;i<N;i++) data[i]=i; // pass array to fortran functions subr1_(&N,data); subr2_(&N,data); // free free(data); } test_array_f90.f90 subroutine […]