我有一个字符串,我想用子例程调用中的意图(输出)数据进行初始化。我看起来有点像这样:
character(*) :: path
call get_path(path)
Run Code Online (Sandbox Code Playgroud)
编译器告诉我:
错误:假定字符长度为 (1) 的实体必须是虚拟参数或 PARAMETER
该结构在子程序中运行良好,但在主程序中失败。是否可以在不知道路径变量长度的情况下初始化路径变量?
编辑:我已经尝试过但失败了。
character(99) :: path_temp
character(:), allocatable :: path
call get_path(path_temp)
allocate(path(len(trim(path_temp))))
Run Code Online (Sandbox Code Playgroud)
错误:(1) 处可分配标量的形状规范
我不明白为什么编译器认为路径是标量。
返回具有假定长度的字符的函数显然是非法的。
character(*) function get_path ()
get_path = '/path/to/folder/'
end function get_path
Run Code Online (Sandbox Code Playgroud)
错误: (1) 处的字符值模块过程“get_path”不得假定长度
什么有效但让我头疼,因为我发现它非常糟糕的风格是给路径一个疯狂的长度并在每次使用时修剪它。我认为我的编译器在处理可分配字符串时遇到问题,因为它不是最新的(mpif90)。不确定它是否支持它们。
MPI_Sendrecv,MPI_Scatter,等等- -在MPI描述发送和接收许多程序对数和类型参数都发送和接收.例如,在Fortran中,MPI_Scatter的签名是:
MPI_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE,
RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
Run Code Online (Sandbox Code Playgroud)
如果发送的数据量必须与收到的数量相同,为什么还需要?这不仅仅是引入不一致的可能性吗?
需要不同计数/类型的用例是什么?
我无法让 iOS 通用链接接受一种路径,但忽略另一种非常相似的路径。我想要在应用程序中打开的路径如下所示:
/details/123567,我想要忽略的路径如下所示:/details?search=123456。
起初,我将其列入白名单/details/*,但这会打开两种链接。添加NOT /details?query=*导致所有链接无法打开。我读到路径参数被忽略。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "a.b.c",
"paths": [ "NOT /details?search=*", "/details/*"]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法成功区分这两种路径?