首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++和Fortran:从C++访问Fortran公共块中的数组时出错

C++和Fortran:从C++访问Fortran公共块中的数组时出错
EN

Stack Overflow用户
提问于 2012-05-07 20:21:55
回答 5查看 1.8K关注 0票数 2

我正在尝试从C++访问Fortran公共块结构中的数组。

我有一个混合了C++和Fortran的示例代码。

Fortran:

代码语言:javascript
运行
复制
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++中:

代码语言:javascript
运行
复制
extern "C"{  
    extern struct{  
        int *a,b;  
}sample_;  

在C++中,如果我尝试打印值sample_.b

代码语言:javascript
运行
复制
printf("sample b:%d\n",sample_.b);

我得到了a(2)的值:sample b:5

如果我尝试打印任何其他数组-a值,我只会得到一个分段错误...

代码语言:javascript
运行
复制
printf("sample_.a[1]=%d\n",(int)sample_.a[1]);  
printf("sample_.a[0]=%d\n",(int)sample_.a[0]);

我做错了什么?你知道吗?

我想,也许我也必须把数组"a“的长度传递给C++,但如果是这样的话,我也不知道该怎么做。

EN

Stack Overflow用户

发布于 2012-05-07 21:03:56

在我看来,您的FORTRAN数据实际上布局为

代码语言:javascript
运行
复制
struct {
  int a[5];
  int b;
}

你在一台机器上,sizeof(int) == sizeof(int*)

票数 3
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10481999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档