我必须编写一个可以被 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', '!' /))
我的主要问题似乎是它不喜欢假设形状的数组,并且给它一个集合(大)大小也会输出所有后来碰巧被拾取的垃圾内存。
有没有更好的方法来做到这一点?