我有这段代码:
subroutine ReadCharToVariable(self,Format,VarOut)
implicit none
! Declaring Part
class(FileImporter) :: self
character(len=25) :: DefaultValue = 'null'
character(len=25), intent(out) :: VarOut
character (len=*) :: Format
class(*), allocatable :: Value
! Executing Part
allocate(Value,source = DefaultValue)
call self%ReadValueToVariable(Format,Value)
select type(Value)
type is (character(*))
VarOut = Value
end select
end subroutine ReadCharToVariable
它的作用是,它调用ReadValueToVariable,Value
是一个字符类型。然后,ReadValueToVariable从文件中读取一个字符并将其返回Value
。编译它(gcc 4.8.5)会导致错误
/tmp/cc5JuIb6.s: Assembler messages:
/tmp/cc5JuIb6.s:156: Error: symbol `__fileimporter_class_MOD___copy_character_1' is already defined
错误是由type is (character(*))
行引起的(没有编译的字符功能)。我不明白这里有什么不对,也许你可以帮助我?
答案 0 :(得分:0)
这绝对是一个编译错误。它与gfortran 4.9中的https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359有关,或直接与此相关{{3}}。请注意,很长一段时间内不支持4.8,我认为版本4.9.4也是4.9的最后一个版本。支持的版本是5和6。