小编Fel*_*lix的帖子

Fortran:在主程序中初始化未知长度的字符串

我有一个字符串,我想用子例程调用中的意图(输出)数据进行初始化。我看起来有点像这样:

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)。不确定它是否支持它们。

string fortran initialization character

5
推荐指数
1
解决办法
8975
查看次数

您何时会使用不同的计数或类型来发送和接收进程?

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)

如果发送的数据量必须与收到的数量相同,为什么还需要?这不仅仅是引入不一致的可能性吗?

需要不同计数/类型的用例是什么?

mpi

4
推荐指数
1
解决办法
246
查看次数

iOS 通用链接:忽略带参数的路径

我无法让 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)

有没有办法成功区分这两种路径?

ios ios-universal-links

1
推荐指数
1
解决办法
3160
查看次数