Intel Fortran 错误 #6633:实际参数的类型与虚拟参数的类型不同

2024-03-22

对于可能在这里提出这样一个基本问题,我深表歉意,我是使用英特尔 Fortran 编程的新手,所以我认为在这种情况下,我不知道有一些东西丢失或组织错误。如果有人能在这方面帮助我,我将不胜感激。

问题是我在编译代码时看到以下错误,而我相信我已经声明了派生类型变量cr and me正确。

error #6633: The type of the actual argument differs from the type of the dummy argument.   [CR]

error #6633: The type of the actual argument differs from the type of the dummy argument.   [ME]

我的代码包含一个名为InputData其中包含派生类型的定义grid以及派生类型变量的声明cr and me类型的grid。我在主程序中使用这些定义USE陈述。该错误是指主程序中的一行CALLs一个内部子程序使用cr和“me”作为输入参数(INTENT(IN))。令人惊讶的是,我使用完全相同的方式来声明派生类型变量ls类型的Levelset模块中定义OutputData用一个USE主程序中的语句,并且在同一子例程中该变量上没有错误。添加一个USE InputData子程序的语句ComputeLS也没有解决这个问题。程序单元的结构如下:

MODULE InputData
    TYPE grid                                               
        REAL, DIMENSION(:,:), POINTER :: nodes 
        INTEGER, DIMENSION(:,:), POINTER :: connectivity    
    END TYPE grid
    TYPE(grid) :: cr, me

    CONTAINS
        …
END MODULE InputData

MODULE OutputData
   TYPE levelset                                                  
       REAL, DIMENSION(:), POINTER :: f, g       
   END TYPE levelset    
   …
   TYPE(levelset) :: ls                

   CONTAINS
   …
END MODULE OutputData

PROGRAM Main
    USE InputData
    USE OutputData
    USE Timing
    IMPLICIT NONE

    INTEGER, DIMENSION(:,:), POINTER :: ed
    …

    CALL ComputeLS(me, cr, ed, ls)    <========= error #6633 refers to this line    
    …

    CONTAINS

    ! INTERNAL PROCEDURES
    SUBROUTINE ComputeLS(me, cr, ed, ls)

        USE MathCalc
        IMPLICIT NONE

        TYPE(grid), INTENT(IN) :: me, cr
        INTEGER, DIMENSION(:,:), INTENT(IN) :: ed

        TYPE(levelset), INTENT(OUT) :: ls
        …

    END SUBROUTINE ComputeLS
    …
END PROGRAM Main

我尝试删除所有模块并将所有类型定义和变量声明包含在主程序中,而不是包含在单独的模块中。但不幸的是错误仍然存​​在。


我认为这是一个已知的编译器错误,ID DPD200250382,已在我们即将发布的 15.0 版本中修复,但您的部分示例与问题描述略有不同。您是否使用我们的 Windows 编译器并启用了“诊断”>“检查例程接口”?如果是这样,请尝试将该选项设置为“否”,看看会发生什么。

如果这没有帮助,我想看看完整的测试用例。

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

Intel Fortran 错误 #6633:实际参数的类型与虚拟参数的类型不同 的相关文章

随机推荐