Fortran Coder

查看: 6070|回复: 2
打印 上一主题 下一主题

[混编] 帮忙看下有什么语法错误吗?重要的是指针使用上

[复制链接]

13

帖子

8

主题

0

精华

入门

F 币
83 元
贡献
51 点
跳转到指定楼层
楼主
发表于 2016-1-20 19:14:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 苏坡,man 于 2016-1-20 19:21 编辑

        module d7p
        use  ISO_C_BINDING
        implicit none
        
        type struct
         integer(c_int) starti,endi,startj,endj
         integer(c_int) k_N
         integer(c_int) iter
        !  integer(c_int),pointer :: src_addr =>null()!void *src_addr
         type(c_ptr) ::src_addr  
        end type
        contains
          subroutine neighbor(neighbor_addrs,num_neigh,args)  !这个函数是传递给c函数使用,在c函数中需要使用到neighbor_addrs,num_neigh。neighbor_addrs在c函数那边被使用的类型是是void**,args在c函数那边被使用的类型是void*;num_neigh在c函数那边被使用的类型是int*
          implicit none
            include 'globals.h'
           
          integer(c_int) starti,startj
          integer(c_long),pointer :: src_p =>null()
           type(c_ptr) :: src
         !  type(c_ptr) ::args
          type(c_ptr) :: neighbor_addrs
          type(struct),target :: args
          integer(c_long),dimension(32),target :: addrs
          integer(c_int),target :: num
          !integer(c_int),pointer :: neighbor_addrs =>null()
          integer(c_int),pointer :: num_neigh=>null()
             starti = args%starti
             startj = args%startj
                 src = args%src_addr
             !args = c_loc(ar)
             call c_f_pointer(src,src_p)
             num = 1
          if (starti>=BLKX)then
                 addrs(num) = (src_p-BLKX*BLKY*Z*8) !计算地址
                    neighbor_addrs = c_loc(addrs(num))!想给   neighbor_addrs使用数组addrs中的值
                  !neighbor_addrs => addrs(num)
             num_neigh=>num
                 num=num+1
          endif
          if (starti<X-BLKX)then
                 addrs(num) = (src_p+BLKX*BLKY*Z*8)
                 ! neighbor_addrs => addrs(num)
                 neighbor_addrs = c_loc(addrs(num))
             num_neigh=>num
                 num=num+1
                 return
         end subroutine neighbor

3d7p.f

7.91 KB, 下载次数: 4

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

沙发
发表于 2016-1-21 06:26:42 来自移动端 | 只看该作者
lz,你的水平也太高了,写完代码自己不编译调试,直接甩给版友完事。这架势,恐怕参与fortran标准的大神Jhon Reid和Ian Duff也不带这么趾高气昂

13

帖子

8

主题

0

精华

入门

F 币
83 元
贡献
51 点
板凳
 楼主| 发表于 2016-1-21 10:25:47 | 只看该作者
pasuka 发表于 2016-1-21 06:26
lz,你的水平也太高了,写完代码自己不编译调试,直接甩给版友完事。这架势,恐怕参与fortran标准的大神Jho ...

我已经编译调试过的,不过昨天下午没调试出来,于是才上传。不过昨晚我就把问题解决了。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-14 14:38

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表