1
下面列出的Fortran函數按照預期使用ifort 11.1進行編譯和執行。然而GFortran 4.6返回編譯器錯誤:在Fortran中使用派生類型指針和多態目標
THIS_NML => THIS
Error: Different types in pointer assignment at (1); attempted assignment of CLASS(UNIT) to TYPE(UNIT).
Fortran代碼:
FUNCTION PROCESS_COMMAND(THIS, CMD, DATA) RESULT(RET)
CLASS(UNIT), INTENT(INOUT), TARGET :: THIS
CHARACTER(LEN = *), INTENT(IN) :: CMD
CHARACTER(LEN = *), INTENT(IN) :: DATA
CHARACTER(LEN = 200) :: STRING
INTEGER :: IOS
TYPE(UNIT), POINTER :: THIS_NML
! CREATE A NAMELIST
NAMELIST /VARS/ THIS_NML
THIS_NML => THIS
RET = 0
STRING = '&VARS THIS_NML%' // TRIM(CMD) // ' = ' // TRIM(DATA) // ' /'
! READ CMD AND DATA
READ(STRING, NML=VARS, IOSTAT=IOS)
RET = IOS
END FUNCTION PROCESS_COMMAND
因爲名稱列表的不能使用多態對象被創建,派生類型指針THIS_NML
被用於創建名稱列表。任何想法如何使這與GFortran工作?
謝謝!這編譯和運行在gfortran 4.6和ifort 11.1中。 – mannyburet 2012-03-13 02:41:40