我在一个看起来像这样的模块中有一个函数(如果有人感兴趣,就是这个函数)
MODULE MYMODULE
IMPLICIT NONE
! Some random stuff
CONTAINS
CHARACTER*255 FUNCTION strtok ( source_string, delimiters )
[...]
END FUNCTION strtok
SUBROUTINE DO_SOMETHING ( )
CHARACTER(LEN=255) :: strtok
[...] !
END SUBROUTINE DO_SOMETHING
END MODULE MYMODULE
该strtok
函数是 C 字符串标记器的一个版本,我将在子例程中使用该函数DO_SOMETHING
。我需要定义strtok
,否则 gfortran 会抱怨它没有被定义。但是,如果我这样做,并编译我的代码并将其链接到主程序,链接器会抱怨对strtok_
. 我不知道为什么会这样,因为它们都在同一个模块中并且应该是可见的。同一模块中的其他函数和子程序没有这个问题。这与这是一个字符*返回函数的事实有关吗?