Reference 如何从fortran中的引用中获取值?

Reference 如何从fortran中的引用中获取值?,reference,fortran,Reference,Fortran,我试图更新一段fortran代码,该代码根据IDL例程的输入进行计算。当IDL例程调用fortran时,它会传递每个变量()的引用。fortran代码当前试图将输入数组中的每个引用与%VAL()标记一起传递到不同的子例程 这与前面的代码配合得很好,因为它是以这样一种有用的方式编译的;然而,新的编译器给出了一个警告:我传递的是一个整数(8),而不是正确类型的变量。另外,根据,使用%VAL有点可疑 如果这可能会导致问题,我可以使用什么来获取不会到处抛出警告的值,不需要我有一个传递引用的例程,或者至少

我试图更新一段fortran代码,该代码根据IDL例程的输入进行计算。当IDL例程调用fortran时,它会传递每个变量()的引用。fortran代码当前试图将输入数组中的每个引用与%VAL()标记一起传递到不同的子例程

这与前面的代码配合得很好,因为它是以这样一种有用的方式编译的;然而,新的编译器给出了一个警告:我传递的是一个整数(8),而不是正确类型的变量。另外,根据,使用%VAL有点可疑

如果这可能会导致问题,我可以使用什么来获取不会到处抛出警告的值,不需要我有一个传递引用的例程,或者至少可以在任何编译器上工作


另外,如果有人能澄清这里到底发生了什么或为什么,我也会很感激。

“发出警告”——它有效吗?如果是,您是否需要修复它<代码>整数*8不再是标准一致性。我要做的是
仅使用iso\u fortran\u env:int64
,然后用
整数(KIND=int64)
替换
整数*8
。至于
%VAL
我不知道。Integer*8从来都不是标准配置。我会让函数c-可互操作,仔细检查类型的兼容性,使用
value
关键字而不是%VAL,检查调用约定是否匹配,更新我的编译器版本,查找相关的编译器选项,在互联网上查找警告文本,检查结果是否正确,然后决定我是否可以接受这些警告。你没有提供IDL呼叫的必要详细信息;您链接到的文档显示了许多变体。%VAL是DEC扩展(英特尔编译器也支持)。如果
argv
包含其他东西的地址,那么我可以看到它可以工作,但只能在64位系统上工作。我要注意的是,@RodrigoRodrigues对
value
的建议只有在为
map\u gen
提供了显式接口的情况下才有效,该接口为过程提供了
bind(C)
属性。需要更多的信息为您提供有用的答案。
subroutine full_calc(argc, argv)

 implicit none

 integer*8 :: argc
 integer*8, dimension(24) :: argv

 call map_gen(%VAL(argv(1)), %VAL(argv(2)), ...)

end subroutine full_calc