我同时使用intel和gnu fortran编译器。使用以下设置编译模块时,Syntastic会出现以下错误:
syntastic_fortran_compiler 设置为' ifort' &使用ifort -c my_mod.f90
,然后在USE my_mod
行显示错误。
syntastic_fortran_compiler 设置为' gfortran' &使用gfortran -c my_mod.f90
,然后在CALL subroutine
行显示错误。
要更改 syntastic_fortran_compiler 的值,我可以通过vim中的:help syntastic-checkers-fortran
访问它来编辑文件:syntastic-checkers.txt。
代码运行没有问题;一切都好。该模块完成了预期的工作。当它显示错误时我喜欢 loc_list ,但是当它出现不可移动的非错误时会很烦人。目前,我已设置let g:syntastic_auto_loc_list = 0
。
这是在 gcc版本4.8.4 的计算机上生成的。有趣的是,当我在gcc版本为5. *的机器上执行此操作时,gfortran错误消失了。另外,我使用 ifort版本16.0.3 。
EDIT1 :我在上面编译后用vim打开主程序文件时看到了错误。
EDIT2 :在评论中提及lcd047时,我应该将let g:syntastic_fortran_compiler ="ifort"
添加到我的.vimrc中。这样做可以解决错误(1),现在两种情况都会产生错误(2)。
EDIT3 :
最有趣的事情发生了。在我执行EDIT2之后,我缩进了我的MODULE中包含的SUBROUTINE中的代码,因为每次按下Enter键时光标都会跳过一个缩进,并且它变得很烦人(直到现在模块中的所有代码都没有缩进)。 / p>
然后,当我这次打开我的主文件时, syntastic 实际上告诉我错误信息是什么错误(到现在为止它只说错误)。消息:实际参数的类型与伪参数的类型不同。它强调了args中的所有REAL(我有REAL和INTEGER args)。
然后我打开my_mod.f90进行检查;一切似乎都没问题。而这次当我打开main.f90时,不再有错误了。我上面写的就是我所做的一切。我不知道错误是如何消失的。
EDIT4 :以上效果可重现。当g:syntastic_fortran_compiler = "ifort"
时,如果我使用gfortran编译一次,并打开文件, syntastic 表示它无法识别该模块。好的,可以。现在,如果我再次使用ifort编译, syntastic 会再次给出不同类型的错误消息。关闭并再次打开文件会删除错误。