一直以来,ifort都是我编译f90文件的首选编译器,gfortran只在服务器上才用。然而今天就被ifort给坑了。
编译一个f90文件,编译没问题,没错误。编译完一运行就见了鬼了——报错,错误代码是170。这个错误一般是跟数组有关。然后我就去检查导致报错的子进程,看来看去并没有哪个数组变量的声明有错啊。无奈之下,忽然想到用mingw的gfortran来编译一下,看看能不能通过并运行。果然,用gfortran编译通过并运行成功了。这证明代码逻辑应该没问题,估计是ifort自己的问题。于是再次看代码,发现数组声明的时候,数组维度是用一个整型全局变量R来定义的,而之前用整型常量定义数组时,ifort编译运行是没毛病的,于是将R算出来,然后定义为整形常量。再次编译运行便没错了。
最后不得不感慨,Fortran真是个爷爷语言,不仅年纪大难伺候,动不动就来点莫名其妙的问题,还有诸如函数调用繁琐的毛病,没多少功能写出来的代码却一大堆。这更加坚定了我转投Julia怀抱的想法。还是现代化语言好啊,Fortran就算2008标准,也没比90标准好到哪里去。。。