41 | character(kind=c_char),dimension(*),intent(in)::fName = "/mnt/d/Code/fortranRW/TEST.DATJ" | 1 Error: Assumed size array at (1) must be a dummy argument
时间: 2024-02-14 22:36:11 浏览: 139
这个错误提示显示在 Fortran 代码的第 41 行,意思是该行代码中的假定大小数组必须是一个虚拟参数。这意味着,您需要将该行代码中的数组声明为一个具有固定大小的数组,或者将该数组作为一个参数传递给该函数。
您可以尝试将该行代码中的数组声明为具有固定大小的数组,或者将其作为参数传递给该函数。另外,请确保您的 Fortran 编译器支持假定大小数组。
相关问题
27 | CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: fullName | 1 Error: Unexpected data declaration statement at (1) ReadWrite.f90:28:47:
这段代码是Fortran语言的代码,其中出现了一个语法错误。错误位于第27行,可能是因为在接口函数声明中使用了错误的语法。在Fortran中,接口函数声明中只能包含参数的类型和属性声明,不能包含实际的数据声明。因此,需要将第27行改为以下代码:
```
CHARACTER(KIND=C_CHAR), INTENT(IN) :: fullName(*)
```
其中,DIMENSION(*)被省略了,因为Fortran中的字符数组可以通过指定数组长度的方式来声明。另外,INTENT属性声明了该参数是输入参数。这样就可以正确地声明fullName参数了。
27 | character(kind=c_char), dimension(*), intent(in) :: fullName | 1 Error: Unexpected data declaration statement at (1) ReadWrite.f90:28:11:
这个错误提示表明在第 27 行附近出现了一个语法错误,具体原因是在 Fortran90 中,`interface` 必须出现在子程序声明之前,而你的代码中 `interface` 出现在了子程序声明之后。
要解决这个问题,你需要将 `interface` 块移到 `subroutine my_cpp_read(fullName)` 声明之前,如下所示:
```fortran
subroutine my_fortran_read(fullName)
use, intrinsic :: iso_c_binding
implicit none
interface
subroutine my_cpp_read(fullName) bind(C, name="my_cpp_read")
use iso_c_binding
character(kind=c_char), dimension(*), intent(in) :: fullName
end subroutine my_cpp_read
end interface
! rest of the subroutine body
end subroutine my_fortran_read
```
在上面的代码中,`interface` 块被移动到了子程序声明之前,这样就可以避免上述错误了。
阅读全文