我正在尝试从 C++ 访问 Fortran 公共块结构中的数组。
我有一个包含 C++ 和 Fortran 的混合示例代码。
Fortran:
integer a(5),b
common /sample/ a,b
a(1) = 1
a(2) = 5
a(3) = 10
a(4) = 15
a(5) = 20
b = 25
然后在 C++ 中:
extern "C"{
extern struct{
int *a,b;
}sample_;
在 C++ 中,如果我尝试打印值sample_.b
:
printf("sample b:%d\n",sample_.b);
我得到 a(2) 的值:sample b:5
如果我尝试打印任何其他数组-a 值,我只会遇到分段错误......
printf("sample_.a[1]=%d\n",(int)sample_.a[1]);
printf("sample_.a[0]=%d\n",(int)sample_.a[0]);
我做错了什么?¿任何想法¿?
我想,也许我也必须将数组“a”的长度传递给 C++,但如果是这样,我也不知道该怎么做。