Fortran调用方-被调用方不匹配:大小-1-数组与标量
我正在使用一些旧的Fortran代码,并使用编译时调用方调用方不匹配检测(ifort的Fortran调用方-被调用方不匹配:大小-1-数组与标量,fortran,Fortran,我正在使用一些旧的Fortran代码,并使用编译时调用方调用方不匹配检测(ifort的-gen interfaces-warn interfaces)发现了一些警告。在以下情况下,我收到了一些警告: 调用者将变量real*8x(即标量)传递给子例程,而子例程需要real*8x(1)(即数组) 与情况1相反:调用方将real*8x(1)传递给子例程,而子例程将x声明为real*8x 现在,这可以接受吗?据我所知,这没有问题,我是对的,对吗?或者会出现什么问题 如果目标abi与此标准冲突不兼容,则会
-gen interfaces-warn interfaces
)发现了一些警告。在以下情况下,我收到了一些警告:
real*8x
(即标量)传递给子例程,而子例程需要real*8x(1)
(即数组)real*8x(1)
传递给子例程,而子例程将x
声明为real*8x
现在,这可以接受吗?据我所知,这没有问题,我是对的,对吗?或者会出现什么问题 如果目标abi与此标准冲突不兼容,则会发生故障。对于被调用者数组可以声明为intent(in)的情况,可以通过使用构造函数提升调用者参数来修复它,例如,[x]和“will work”之间可能存在差异。不允许的事情可能确实会导致意外问题。这听起来非常类似于我们应该知道是否有显式接口可用于子例程。它以前可以工作,或者在编译后链接函数/子例程的某些情况下可以工作。现在(F90之后),您最好使用模块/过程来接受其中一个,并以相同的方式执行操作。编译器基本上更好,因此需要更多地检查参数是否正确。。。这也是通常发生很多问题的地方(几乎总是在接口上)!