Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler errors 英特尔Fortran错误#6633:实际参数的类型与伪参数的类型不同_Compiler Errors_Fortran - Fatal编程技术网

Compiler errors 英特尔Fortran错误#6633:实际参数的类型与伪参数的类型不同

Compiler errors 英特尔Fortran错误#6633:实际参数的类型与伪参数的类型不同,compiler-errors,fortran,Compiler Errors,Fortran,请接受我的道歉,我可能会在这里问这样一个基本的问题,我是新的编程与英特尔Fortran,所以我认为有一些东西丢失或错误组织,我不知道在这种情况下。如果有人能在这方面帮助我,我将不胜感激 问题是,我在编译代码时看到以下错误,而我相信我已经正确地声明了派生类型变量cr和me error #6633: The type of the actual argument differs from the type of the dummy argument. [CR] error #6633: The

请接受我的道歉,我可能会在这里问这样一个基本的问题,我是新的编程与英特尔Fortran,所以我认为有一些东西丢失或错误组织,我不知道在这种情况下。如果有人能在这方面帮助我,我将不胜感激

问题是,我在编译代码时看到以下错误,而我相信我已经正确地声明了派生类型变量
cr
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
的定义以及类型
grid
的派生类型变量
cr
me
的声明。我使用
use
语句在主程序中使用这些定义。错误是指主程序中的一行,
调用内部子例程,该子程序使用
cr
和“me”作为输入参数(
INTENT(in)
)。令人惊讶的是,我在主程序中使用
use
语句声明Module
OutputData
中定义的
Levelset
类型的派生类型变量
ls
,使用完全相同的方法,并且在同一子例程中该变量没有错误。将
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
模块输入数据
类型网格
实数,维度(:,:),指针::节点
整数,维度(:,:),指针::连接性
端型格栅
类型(网格)::cr,me
包含
…
端模块输入数据
模块输出数据
类型水平集
实数,维(:),指针::f,g
端型水平仪
…
类型(水平集)::ls
包含
…
终端模块输出数据
主程序
使用输入数据
使用OutputData
使用计时
隐式无
整数,维度(:,:),指针::ed
…

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


如果这没有帮助,我希望看到一个完整的测试用例。

主程序中如何定义
ed
?@AlexanderVogt:“ed”的定义如下;但是,由于错误最后提到[cr]或[me],因此问题似乎与“ed”无关。整数,维(:,:),指针::edMhm,虽然内部过程和模块的组合让我感到困惑(可能还有编译器),但我看不到您发布的内容中有错误。您能否将
ComputeLS
放入模块中(例如
仅使用InputData:grid
)?另外,一个可编译的示例也不错;-)@亚历山大·沃格特:谢谢。我试图删除所有模块,并在主程序中包括所有类型定义和变量声明,而不是在单独的模块中。但不幸的是,错误仍然存在。@HighPerformanceMark:谢谢。我也曾经认为这个问题是由于伪参数和实际参数的名称相似造成的。我将伪参数更改为“cr_grid”和“me_grid”,但错误仍然存在。这是否表明编译器古怪?你有什么意见吗?谢谢你,史蒂夫。默认情况下,检查例程接口设置为“否”。因此,禁用该设置时会发生错误。你能让我知道我如何能发送一个完整的案例给你吗?在这个网站上有没有任何地方我可以为你上传一个完整的案例?你可以在我们的用户论坛的帖子中附加一个测试案例,如果有多个来源,最好是zip文件。嗨,史蒂夫。我在英特尔论坛的这篇文章中附上了一个测试用例。你得到了答案。