Я пытаюсь получить доступ к массиву в общей блочной структуре Fortran из C++.
У меня есть смешанный пример кода с C++ и 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
Затем в С++:
extern "C"{
extern struct{
int *a,b;
}sample_;
Из С++, если я попытаюсь напечатать значение sample_.b
:
printf("sample b:%d\n",sample_.b);
Я получаю значение a(2): sample b:5
И если я попытаюсь напечатать любое другое значение массива, я просто получу ошибку сегментации...
printf("sample_.a[1]=%d\n",(int)sample_.a[1]);
printf("sample_.a[0]=%d\n",(int)sample_.a[0]);
Что я делаю не так?¿ Любая идея ¿?
Я думаю, может быть, мне нужно передать длину массива «a» и в C++, но если да, то я тоже не знаю, как это сделать.