gpt4 book ai didi

fortran - 检查是否定义了内部模块常量

转载 作者:行者123 更新时间:2023-12-03 18:38:25 25 4
gpt4 key购买 nike

Fortran 标准不断发展,随着新的内在变量的引入,编译器会在一段时间后选择它们。一个例子是变量 C_PTRDIFF_T .

为了使我的代码也可以与较旧的编译器编译,如果内部变量尚未由编译器本身定义,我想定义它们,例如,

program test
USE ISO_C_BINDING
Integer, Parameter :: C_PTRDIFF_T = 12
end program

我怎样才能使它跨编译器可移植?

最佳答案

尝试编译并运行类似于:

USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTRDIFF_T
IF (C_PTRDIFF_T >= 0) THEN
PRINT "('Ok')"
ELSE
PRINT "('Not ok')"
END IF
END

如果编译成功,则编译器知道支持 C_PTRDIFF_T 的标准。

如果运行程序然后打印 Ok(因此 C_PTRDIFF_T 常量的值是非负的),处理器还支持与相关 C 类型可互操作的整数。

根据这个测试,您可以适本地配置您的程序,也许通过为模块选择稍微不同的源代码,该模块提供独立定义或从 ISO_C_BINDING 转发 C_PTRDIFF_T。

以后的标准能够向内部模块添加新实体,这就是为什么有时建议在内部模块的 USE 语句中始终使用 ONLY 子句的编程风格。

(注意 C_PTRDIFF_T 是内在模块中的常量,它不是变量也不是内在的。)

关于fortran - 检查是否定义了内部模块常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24398626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com