Error: symbol `__fileimporter_class_MOD___copy_character_1' is already defined

Error: symbol `__fileimporter_class_MOD___copy_character_1' is already defined

我有这段代码:

    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 然后从文件中读取一个字符并 returns 它在 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(*)) 行引起的(没有它编译的字符功能)。我不明白这里出了什么问题,也许你可以帮助我?

这绝对是一个编译器错误。与https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359有关,或者直接就是这个https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60359,在gfortran 4.9中被修复。请注意,4.8 有一段时间不受支持,我认为 4.9.4 版本也是 4.9 的最后一个版本。支持的版本是 5 和 6。