首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ifort -> gfortran: INT_PTR_KIND()

ifort -> gfortran: INT_PTR_KIND()
EN

Stack Overflow用户
提问于 2015-08-06 17:58:59
回答 2查看 704关注 0票数 1

我正在将一些代码从Intel移植到gfortran,我不知道如何移植Intel的INT_PTR_KIND()函数。

代码语言:javascript
复制
program main
  integer (INT_PTR_KIND()) v1
  integer v2

  print*, "sizeof v1:", sizeof(v1)
  print*, "sizeof v2:", sizeof(v2)   
  print*, "sizeof INT_PTR_KIND:", INT_PTR_KIND() 
end program main   

给我与Intel编译器如下:

代码语言:javascript
复制
sizeof v1:                     8  
sizeof v2:                     4 
sizeof INT_PTR_KIND:           8

请问,如何在gfortran中取得以下结果?我试过了,...everything给了我4。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-06 18:56:18

iso_c_binding模块中正确的整数类型是c_intptr_t

也就是说,与您的代码最直接的等效是:

代码语言:javascript
复制
use, intrinsic :: iso_c_binding

integer(c_intptr_t) :: v1

对于某些编译器来说,integer(8)可能意味着任何事情,也可能毫无意义。

integer(c_intptr_t)可直接与C (T)的intptr_t互操作。

票数 2
EN

Stack Overflow用户

发布于 2015-08-06 18:25:14

您需要查看互操作性方面的内容,use iso_c_binding,在这里,有一种特殊类型的C指针,这可能是您要寻找的。

代码语言:javascript
复制
program test
    use iso_c_binding
    implicit none

    type(c_ptr) :: adr
    integer(8) :: int8
    integer :: int_default

    print*, sizeof(adr)
    print*, sizeof(int8)
    print*, sizeof(int_default)

end program test

请跟随此链接了解更多信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31862688

复制
相关文章

相似问题

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