cho*_*ger -4 syntax warnings fortran lint
所以我继承了用Fortran编写的这个(不是真正遗留的)项目.为了使它成为线程安全的,我必须将一个void*
指针(称为user_data
,你可能知道模式)传递给所有fortran例程,以便它们可以将它传递回回调(因此全局状态现在已正确分配堆).
令我真诚的惊讶的是,这导致了在最奇怪的地方完全崩溃和断块.毕竟,我只为所有函数添加了一个未更改的参数?
令我完全恐惧(我不是Fortran程序员,只是一个有解决问题诀窍的普通黑客),我了解到Fortran编译器只是忽略了第72列之外的所有内容,可能是因为列很昂贵或者其他东西,甚至没有发出警告(除了某些"类型错误"(Fortran中的haha类型 - 纪律,这是一个笑话)报道的情况).
直到今天,我一直在代码中找到遭受这种意外的意外后果的地方.
有没有可以在这种错误中可靠地检查Fortran代码库的工具?
并且,作为John Oliver的奖金问题:为什么72列限制仍然是一个问题?
有没有可以在这种错误中可靠地检查Fortran代码库的工具?
是的,你的编译器.有了gfortran
,这将是-Wline-truncation
(包含在-Wall
你应该拥有的东西中).有ifort
,这将是-warn truncated_source
.我敢打赌,(差不多)任何其他编译器都有这个选项.
列数限制为72,历史上从穿孔卡开始增长,并保持向后兼容性.对于大多数编译器,您可以更改甚至禁用此限制.有了gfortran
这将是-ffixed-line-length-<n>
一个整数<n>
,并-ffixed-line-length-0
禁用它.
归档时间: |
|
查看次数: |
82 次 |
最近记录: |