使用 Iso_Fortran_Env 设置函数的 Kind 值

2024-03-30

如何使用 ISO Fortran Env 的内在函数以 Fortran 2008 惯用的方式设置函数的返回 KIND 值?

通常在主程序中,我可以使用 ISO Fortran 内在函数,如下所示:

program name here
    use iso_fortran_env
    implicit none
    integer, parameter :: double=REAL64
    real(kind=double) :: some_variable
end program name here

但似乎没有一种方便的方法可以将这些内在函数用于外部函数,因为 REAL64 和 double 都只能在上面的 main 函数中定义。尝试在 main 中定义函数的 KIND,如下所示:

program name here
    use iso_fortran_env
    implicit none
    integer, parameter :: double=REAL64
    real(kind=double) :: some_function
    ! Do stuff
end program name here
real function some_function()
    ! Do stuff
end some_function

至少在我的系统上,抛出类型不匹配错误(双精度定义为 KIND=8,默认实数在我的系统上定义为 KIND=4)。我总是可以使用real(kind=8) function some_function(),但为了可移植性,我不想这样做。另外,在一个地方使用 iso_fortran_env 中的 REAL64 却又在另一个地方使用 KIND=8 感觉很脏。

有没有一种简单(或至少可读)的方法来实现这一点,如下所示?

real(kind=REAL64) function some_function()

您开始问题时提供了一个解决方案,并且该解决方案效果很好。正如 IanH 指出的那样,标准措辞中存在一些含糊之处,但我读它是说这是允许的,并且编译器确实接受这种语法:

基金.f90:

real(kind=REAL64) function some_function()
  use iso_fortran_env
  some_function = 1._real64
end

compile:

> gfortran -c funkind.f90 
> 

您可以使用函数内部使用的模块中定义的类型。还使用 Intel Fortran 和 Oracle Studio 进行了测试。

现代 Fortran 中的所有函数应该在模块中定义无论如何,但是如果您希望从仅在函数内部使用的模块中获得一种,那么可能性就在这里。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Iso_Fortran_Env 设置函数的 Kind 值 的相关文章

随机推荐

  • ios iphone hooks直接打开instagram而不显示UIDocumentInteractionController

    我正在将通过 Instagram 共享图像集成到我的应用程序中 我读过他们的文档 http instagram com developer iphone hooks 看来我需要使用 iOS UIDocumentInteractionCont
  • 如何获取N个适合Screen/TextView的特定大小的文本?

    我有一个字符串格式的大故事 我想在画廊中显示文本 我想要做的是将所有文本切片 以便图库中的所有视图都显示适合屏幕的文本 这样我就可以部分制作字符串 每个部分将显示在屏幕上 并且每个部分将覆盖整个屏幕 需要注意的一件事是 用户可以更改文本大小
  • 传统的基于代码的工程和模型驱动的工程方法有什么区别?

    我在文献中找到了这段话 但我不明白它的含义 设计实践正在从传统的基于代码的工程转向 在整个开发生命周期中进行严格的分工 模型驱动的工程方法 其中所有人员都参与设计 流程可以对模型有发言权 任何帮助将不胜感激 基于代码的工程意味着大部分工作是
  • 如何使用 Codeigniter 将 JQuery datepicker 中的值插入到 MySQL 日期数据类型?

    我无法使用日期数据类型将 JQuery Datepicker 中的值插入到 MySQL 数据库中 我如何将字符串转换为日期数据类型 我正在使用 Codeigniter 和 MVC 这是我的代码 javascript
  • Spring Integration 使用 randomUUID 丰富标头

    我是 Spring Integration 的新手 使用 Java 7 在转向 Spring 集成 DSL 之前我有这个 xml 配置 并且我的应用程序正在努力使用从随机 UUID 生成的监视 ID 来丰富标头 这是为了将请求与稍后在日志中
  • 如何在 angular2 中导航到新选项卡

    是否有一个参数可以提供给路由器以便路由器 navigate 将在浏览器中的新选项卡 窗口中打开 按照指示创建路线here https angular io docs ts latest guide router html 设置您的app r
  • Google 地图 React Wrapper - 标记集群创建 @googlemaps/react-wrapper

    我正在使用 Google ReactJS 库将地图添加到我的 React Web 应用程序中 并使用 googlemaps react wrapper 库来集群标记 但我无法在包装器上进行标记聚类 如果有人有任何想法 请帮助解决问题 组件代
  • .htaccess - 301 重定向所有不带扩展名的文件以具有 .html 扩展名

    我需要将请求重定向到没有扩展名的文件 并附加 html 扩展名 http www mydomain com this to http www mydomain com this html 以下内容不会被重定向 http www mydoma
  • 在 KeyChainItemWrapper 中保存密码时崩溃

    Apple 在他们的中提供了 KeyChainItemWrapper 类GenericKeyChain 示例代码 http developer apple com library ios samplecode GenericKeychain
  • C# 3.5 DLR 表达式.动态问题

    我继承了一种小型脚本语言 并尝试将其移植到 DLR 以便更容易管理 到目前为止 一切都相当简单 我在尝试动态调用变量的成员时遇到了问题 当前的语言在 NET 上运行 并使用解析循环和反射来执行此操作 但我希望摆脱这种情况 这是脚本语言的示例
  • 在PE的导入表中添加一个条目

    我正在寻找一个命令行程序来向 PE 文件的导入表添加条目 我的目标是将一个新的导入函数从外部 DLL 添加到我的 EXE 然后使用 ollydbg 使用代码洞穴插入新代码 新代码将使用新导入的函数 实际上我已经实现了我的目标 但是要向我使用
  • 使用 LINQWhere 查询仅获取部分 ConfigurationManager.ConnectionStrings

    我的目标是使用 LINQWhere查询于ConfigurationManager ConnectionStrings控制台应用程序中的集合 假设一个新的 NET 4 5 控制台应用程序添加了 System Configuration 引用
  • 一个构造函数 - 多个参数

    我在一些 Java 编程竞赛中找到了一个任务 必须创建仅包含一个参数 文本 和一个构造函数的类 Sentence 这是示例测试代码 Sentence s1 new Sentence only CAT s2 new Sentence and
  • 用户“”登录失败

    我有一个 ASP Net MVC 网站 在本地测试时工作正常 我已将该网站放入您的 Windows Server 2008 计算机上的 IIS 7 中 该网站使用 net 会员提供商 当我尝试登录时收到以下错误 Login failed f
  • 使用python限制类实例的数量

    我的主类创建了一个简单的QmainWindows像这样 class mcManageUiC QtGui QMainWindow def init self super mcManageUiC self init self initUI de
  • 使用 perl 格式化字符串和日期

    我想转换 使用perl 05 26 2013 06 09 47 to 26 05 2013 06 09 47 另外我怎样才能将上面的日期和时间更改为 GMT 日期和时间 use DateTime Format Strptime qw my
  • 用户查找加密数据库字段

    本质上 我有一个保存用户数据的表 所有这些数据都是 AES 加密的 在 BLOB 字段中 这意味着这些字段都不能被索引 这将减慢该表上的任何查询 特别是因为在进行任何匹配之前整个表需要解密 WHERE AES DECRYPT user em
  • 从树视图 tkinter 复制项目

    我的一个 tkinter 应用程序中有一个树视图 我想知道是否真的可以通过用户右键单击来复制选定的字段 如果没有 是否有任何其他小部件允许用户复制 GUI 窗口中显示的选定字段 Code log Toplevel root log titl
  • javascript向函数添加属性

    假设我们有一个函数 function Rabbit console log shiv 现在 无需创建该函数的对象 我就可以分配该对象的属性 Rabbit bark function line console log name is line
  • 使用 Iso_Fortran_Env 设置函数的 Kind 值

    如何使用 ISO Fortran Env 的内在函数以 Fortran 2008 惯用的方式设置函数的返回 KIND 值 通常在主程序中 我可以使用 ISO Fortran 内在函数 如下所示 program name here use i