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
Fortran调用方-被调用方不匹配:大小-1-数组与标量_Fortran - Fatal编程技术网

Fortran调用方-被调用方不匹配:大小-1-数组与标量

Fortran调用方-被调用方不匹配:大小-1-数组与标量,fortran,Fortran,我正在使用一些旧的Fortran代码,并使用编译时调用方调用方不匹配检测(ifort的-gen interfaces-warn interfaces)发现了一些警告。在以下情况下,我收到了一些警告: 调用者将变量real*8x(即标量)传递给子例程,而子例程需要real*8x(1)(即数组) 与情况1相反:调用方将real*8x(1)传递给子例程,而子例程将x声明为real*8x 现在,这可以接受吗?据我所知,这没有问题,我是对的,对吗?或者会出现什么问题 如果目标abi与此标准冲突不兼容,则会

我正在使用一些旧的Fortran代码,并使用编译时调用方调用方不匹配检测(ifort的
-gen interfaces-warn interfaces
)发现了一些警告。在以下情况下,我收到了一些警告:

  • 调用者将变量
    real*8x
    (即标量)传递给子例程,而子例程需要
    real*8x(1)
    (即数组)
  • 与情况1相反:调用方将
    real*8x(1)
    传递给子例程,而子例程将
    x
    声明为
    real*8x

  • 现在,这可以接受吗?据我所知,这没有问题,我是对的,对吗?或者会出现什么问题

    如果目标abi与此标准冲突不兼容,则会发生故障。对于被调用者数组可以声明为intent(in)的情况,可以通过使用构造函数提升调用者参数来修复它,例如,[x]

    和“will work”之间可能存在差异。不允许的事情可能确实会导致意外问题。这听起来非常类似于我们应该知道是否有显式接口可用于子例程。它以前可以工作,或者在编译后链接函数/子例程的某些情况下可以工作。现在(F90之后),您最好使用模块/过程来接受其中一个,并以相同的方式执行操作。编译器基本上更好,因此需要更多地检查参数是否正确。。。这也是通常发生很多问题的地方(几乎总是在接口上)!