1
鑄造後我有一個存儲陣列的類型:保存(或恢復)LBOUND從c_ptr
type data
type(someType) pointer :: someTypePtr(:)
end type
我給你的東西上創建指向c_ptr與
type(data), intent(inout) :: this
integer, intent(in) :: lb, ub
type(someType), target, intent(in) :: sometype(lb:ub)
this%someTypePtr => sometype
到someTypePtr後來我剛剛認爲這個實例爲這個。當我投這個指針回FORTRAN類型之後,下界從0開始:
type(c_ptr) :: ptr
type(someType) :: data
call c_f_pointer(ptr, data)
write(*,*) lbound(data%someTypePtr) !will give 0
是否有類似的東西來重塑改變someTypePtr
回到它的原始lbound:ubound
?
你的源代碼段,如圖所示,是有點不完整或有錯誤。例如 - 第二個片段中的數據必須具有POINTER屬性。我期望一個編譯器能夠診斷那個特定的問題 - 但是可能還有別的東西從示例源中丟失,導致其他問題。你能確保這些代碼片段是準確的嗎?你也可以顯示獲得C_PTR的代碼。在獲取它和它在第二個片段中的使用之間,你如何處理C_PTR?你正在使用哪種編譯器/版本/編譯選項? – IanH 2015-02-12 00:05:01