Fortran Coder

标题: ivf和gfortran编译同一个文件,一个报错一个通过 [打印本页]

作者: y56i89    时间: 2020-4-28 18:05
标题: ivf和gfortran编译同一个文件,一个报错一个通过
因为组传代码需要再用,所以初学fortran
其中有一个静态库需要调用所以用ivf进行编译,发现有两个.f90文件报出以下几种错误:

error #6633: The type of the actual argument differs from the type of the dummy argument.
error #6631: A non-optional actual argument must be present when invoking a procedure with an explicit interface.
error #7977: The type of the function reference does not match the type of the function definition.

查了下是关于函数形参实参类型不一致等的问题所以不能编译,问题是以前他们用的时候从没有说会在这里报错,似乎也没出过问题。

后来就用gfortran试着编译了一下,发现居然都没问题,全部顺利编译打包。不知道是不是两个编译器检查的程度不一样。
但是主力用的是ivf所以还是想搞清楚要是不改源码怎么能让它们通过编译。

环境是vs 2017+intel parallel studio XE 2018 update 3 和codeblocks 17.12

附件里是源码,需要打包成一个静态库。

misc.zip (30.62 KB, 下载次数: 1)





作者: kyra    时间: 2020-4-28 19:20
祖传代码这种问题简直太正常了。祖传的人自己都不知道(因为它们用的编译器太古老,不会做这些高级的检查)
gfortran也可以开启检查,但是默认不开启。

intel fortran 在这方面就非常好,默认开启,更易于发现隐藏的错误。

遇到这种情况,把代码改规范就好了。这是最佳选择。
如果不想这样,可以让 intel fortran 忽略函数接口检查。

在VS中这样操作:项目菜单,属性,Fortran,Diagnostics,Check Routine Interfaces /NO
作者: y56i89    时间: 2020-4-29 11:02
kyra 发表于 2020-4-28 19:20
祖传代码这种问题简直太正常了。祖传的人自己都不知道(因为它们用的编译器太古老,不会做这些高级的检查) ...

谢谢谢谢!放宽接口检查就通过了,报错实在是太多,改起来还不如重写了




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2