我正在将一些代码从Intel移植到gfortran,我不知道如何移植Intel的INT_PTR_KIND()函数。
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编译器如下:
sizeof v1: 8
sizeof v2: 4
sizeof INT_PTR_KIND: 8请问,如何在gfortran中取得以下结果?我试过了,...everything给了我4。
发布于 2015-08-06 18:56:18
iso_c_binding模块中正确的整数类型是c_intptr_t
也就是说,与您的代码最直接的等效是:
use, intrinsic :: iso_c_binding
integer(c_intptr_t) :: v1对于某些编译器来说,integer(8)可能意味着任何事情,也可能毫无意义。
integer(c_intptr_t)可直接与C (T)的intptr_t互操作。
发布于 2015-08-06 18:25:14
您需要查看互操作性方面的内容,use iso_c_binding,在这里,有一种特殊类型的C指针,这可能是您要寻找的。
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请跟随此链接了解更多信息。
https://stackoverflow.com/questions/31862688
复制相似问题