从GNU FORTRAN编译器4.3.2迁移到4.8.5时,用户收到错误
p.for:227.25:
write(3,446) ((r(i),ERC(i),EIC(i),ERp(i),EIp(i)),i=1,I1)
1
Error: Expected a right parenthesis in expression at (1)
这里输出列表是使用隐含的DO循环结构构建的。即使使用--std=legacy
进行编译,错误仍然存在。
问题很容易解决。当我删除数组元素列表周围的括号时,代码编译并且似乎按预期工作。
write(3,446) (r(i),ERC(i),EIC(i),ERp(i),EIp(i),i=1,I1)
我会满意这个修复,但是我们的用户经常在不同的系统上存储多个代码副本,并且在它们之间交换代码似乎是随机的。另一方面,makefile和构建脚本通常特定于我们的集群。
很高兴发现有一个命令行选项可以让这些代码通过语法检查。我在可用的GNU Fortran编译器语言选项列表中找不到类似-ffixed-parenthesized-values-in-implied-loop
的内容。
问:是否可以调整构建脚本以便在不修改源代码的情况下编译此类语句?