Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binding 如何在初始化时获取Fortran中全局变量的地址?_Binding_Fortran - Fatal编程技术网

Binding 如何在初始化时获取Fortran中全局变量的地址?

Binding 如何在初始化时获取Fortran中全局变量的地址?,binding,fortran,Binding,Fortran,在C中,我可以通过以下方式初始化指针类型全局变量: <<file.h>> extern int dummy; extern int* p; <<file.c>> int dummy; int* p = &dummy; 编译器说“错误:初始化表达式中不允许使用(1)处的内在函数‘c_loc’” 我需要这个特性,因为我有一个用Fortran声明的变量。我需要它在C中的地址(用作全局变量),但我不想调用任何Fortran init例程。这是不

在C中,我可以通过以下方式初始化指针类型全局变量:

<<file.h>>
extern int dummy;
extern int* p;

<<file.c>>
int dummy;
int* p = &dummy;
编译器说“错误:初始化表达式中不允许使用(1)处的内在函数‘c_loc’”


我需要这个特性,因为我有一个用Fortran声明的变量。我需要它在C中的地址(用作全局变量),但我不想调用任何Fortran init例程。

这是不可能的。在运行时使用可执行语句。在很短的一段时间内,实际上有一个建议允许在常量表达式中使用C_loc(过去称为初始化表达式),但幸运的是,理智占了上风。我不明白你为什么需要这个。您可以有一个与“dummy”相同的bind(c)变量,并且可以在运行时获取其地址。
module mod
  use, intrinsic :: iso_c_binding, only: c_ptr, c_loc
  integer, target :: dummy
  type(c_ptr), bind(c, name="p") :: p = c_loc(dummy) 
end module mod