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

时间:2014-03-31 16:22:51

标签: binding fortran

在C中,我可以用这种方式初始化指针类型的全局变量:

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

<<file.c>>
int dummy;
int* p = &dummy;

优点是p是链接时的const。我不需要编写初始化p的init函数。因为在我的情况下,&#39;虚拟&#39;从来没有使用过,我只需要它的地址p而我不会改变p。

我想知道如何在Fortran中实现这一点,即在没有执行时初始化的情况下获取变量的地址。我做了以下,但没有成功。

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

编译器说&#34;错误:内在函数&#39; c_loc&#39;在初始化表达式&#34;

中不允许at(1)

我需要此功能,因为我在Fortran中声明了一个变量。我需要在C中使用它的地址(用作全局变量),但我不想调用任何Fortran初始化例程。

0 个答案:

没有答案
相关问题