1
我有一個fortran指針,指的是一些分配的內存。我想「散列」它,以便我得到一個指向該內存的唯一編號。在C中,我會將指針位置轉換爲整數。如何從fortran指針獲得唯一值
我有一個fortran指針,指的是一些分配的內存。我想「散列」它,以便我得到一個指向該內存的唯一編號。在C中,我會將指針位置轉換爲整數。如何從fortran指針獲得唯一值
在Fortran 95中,我不認爲這是嚴格符合標準的方法。您需要使用供應商擴展 - 必要的功能通常可以通過名爲LOC或類似的內部來提供。
在Fortran 2003中,根據Fortran指針指向的對象的性質,可以將對象的C地址(其內存位置)轉換爲整數。
USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_LOC, C_INTPTR_T
TYPE(thing), POINTER :: object
INTEGER(C_INTPTR_T) :: an_integer
!****
ALLOCATE(object)
an_integer = TRANSFER(C_LOC(object), an_integer)