我有一个字符串我想用子程序调用中的intent(out)数据进行初始化。我看起来像那样:
character(*) :: path
call get_path(path)
编译器告诉我:
错误:假定字符长度为(1)的实体必须是虚拟实体 参数或PARAMETER
该构造在子例程中工作正常,但在主程序中失败。是否可以在不知道其长度的情况下初始化路径变量?
编辑:东西我已经尝试但失败了。character(99) :: path_temp
character(:), allocatable :: path
call get_path(path_temp)
allocate(path(len(trim(path_temp))))
错误:(1)
处可分配标量的形状规范
我不明白为什么编译器认为路径是标量。
返回假定长度的字符的函数显然是非法的。
character(*) function get_path ()
get_path = '/path/to/folder/'
end function get_path
错误:(1)处的字符值模块过程'get_path'不得假定为长度
什么有效,但让我头疼,因为我发现非常糟糕的风格是给路径一个疯狂的长度,并在每次使用时修剪它。我认为我的编译器在使用可分配的字符串时遇到问题,因为它不是最新的(mpif90)。不确定它是否支持它们。