5 | import :: c_char | 1 Error: IMPORT statement at (1) only permitted in an INTERFACE body ReadWrite.f90:26:13:
时间: 2024-02-15 19:26:51 浏览: 71
这个错误提示也是说在第5行有一个 IMPORT 语句,但是这个语句只能在 INTERFACE 语句块中使用,不能在其他地方使用。建议将这个 IMPORT 语句移动到 INTERFACE 块中。如果你需要在其他地方使用这个 c_char 类型,可以将其定义为一个 MODULE 然后在其他地方使用 USE 语句引入这个模块。
相关问题
27 | import :: C_CHAR | 1 Error: IMPORT statement at (1) only permitted in an INTERFACE body ReadWrite.f90:28:42:
这个错误信息提示 `import` 语句只能在接口体中使用。你需要将 `import` 语句放在 `interface` 块内部。具体来说,你可以将 `import :: C_CHAR` 放在 `interface` 块的开头,像这样:
```
interface
function my_cpp_read(fullName) bind(C, name="my_cpp_read")
use, intrinsic :: iso_c_binding, only: c_ptr, c_char
implicit none
type(c_ptr), value :: fullName
logical(c_bool) :: my_cpp_read
import :: C_CHAR
! 将 Fortran 字符串转换为 C 字符串
character(kind=c_char), dimension(:), pointer :: fullName_c
integer(c_int) :: fullName_len
fullName_c = c_f_pointer(fullName, [fullName_len])
fullName_c(fullName_len+1) = c_null_char ! 添加字符串终止符
! 调用 C++ 函数
my_cpp_read = my_cpp_read(fullName_c)
end function my_cpp_read
end interface
```
在这个例子中,我们使用 `use, intrinsic :: iso_c_binding, only: c_ptr, c_char` 来导入 `iso_c_binding` 模块,并显式地指定我们需要使用的数据类型 `c_ptr` 和 `c_char`。然后,我们将 `import :: C_CHAR` 移到了 `interface` 块内部。注意,在 `interface` 块中,我们需要显式地声明所有变量的类型,包括函数返回值和参数,因为 Fortran90 不支持自动类型推断。
27 | import :: c_char | 1 Error: IMPORT statement at (1) only permitted in an INTERFACE body ReadWrite.f90:29:60:
这个错误提示也是说在第27行有一个 IMPORT 语句,但是这个语句只能在 INTERFACE 语句块中使用,不能在其他地方使用。建议将这个 IMPORT 语句移动到 INTERFACE 块中。如果你需要在其他地方使用这个 c_char 类型,可以将其定义为一个 MODULE 然后在其他地方使用 USE 语句引入这个模块。
阅读全文