在Fortran中分配字符数组

凯尔

我必须编写一个可以由C和Fortran调用的子例程。该子例程将文件名作为其参数之一。我知道为了与C很好地互操作,ISO C绑定建议使用字符数组进行互操作。

我的问题是:是否存在诸如字符数组文字这样易于编写的东西?我有一个像这样的子程序:

subroutine my_sub(char_array)
  use iso_c_binding, only: c_char
  char(kind=c_char, len=1), dimension(:), intent(in) :: char_array
  ...
end subroutine my_sub

是否可以用以下方式调用此方法:

call my_sub('Hello World!')

还是我必须做一些可怕的事情:

call my_sub((/ 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!' /))

我的主要问题似乎是,它不喜欢假定形状的数组,并且给它设置了一个(大)大小也将输出所有碰巧在之后被拾取的垃圾内存。

有更好的方法吗?

弗拉基米尔F

序列关联规则允许类似的情况。您可以使用

call my_sub('Hello World!')

但前提是您要使数组具有假定的大小dimension(*)或明确的形状。

通常,在Fortran 2008中,不能将假定的形状数组用于C互操作过程。这将改变我的未来,但会更加复杂。

另一重要提示。仅使用iso_c_binding模块并不能使过程C互操作。您必须使用bind(C),可能使用绑定名称。那很重要。即使没有模块(仅有限模块),您也可以创建可互操作的过程。传递字符串而不是1个字符的数组的功能也取决于此。

这就是为什么我不喜欢说“使用iso_c_binding创建可互操作的过程”的原因。

该过程的接口必须在Fortran中显式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Fortran子例程中分配数组

来自分类Dev

如何使用指针数组在 FORTRAN 中分配不相邻的数组条目

来自分类Dev

在C中分配字符“æ”,“ø”或“å”

来自分类Dev

如何在C ++中分配字符串数组?

来自分类Dev

Fortran未分配的数组

来自分类Dev

在Fortran中分配已取消引用的指针

来自分类Dev

在多维数组中分配值

来自分类Dev

在C中分配多维数组

来自分类Dev

在matlab中分配结构数组

来自分类Dev

在多维数组中分配值

来自分类Dev

在函数中分配结构数组

来自分类Dev

在结构数组中分配结构数组

来自分类Dev

M在main之外的函数中分配大型2D字符串数组

来自分类Dev

如何在int数组中分配内存

来自分类Dev

在C中分配2D数组

来自分类Dev

在循环中分配数组的值

来自分类Dev

在Julia中分配给多维数组

来自分类Dev

在数组键中分配变量

来自分类Dev

在数组javascript中分配对象

来自分类Dev

在JSON数组中分配PHP值

来自分类Dev

在多行texbox winforms中分配数组

来自分类Dev

在函数中分配指向数组的指针

来自分类Dev

在 Oracle 中分配数组或表变量

来自分类Dev

在C中分配字符串

来自分类Dev

Fortran函数返回可分配数组

来自分类Dev

Fortran PACK的多态数组分配:问题

来自分类Dev

数组:如何在数组中分配对象

来自分类Dev

Intel Fortran错误“未分配可分配数组或指针”

来自分类Dev

使用索引功能在R中分配数组值