在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初始化例程。