Intel ifx编译器因假定秩哑元声明空格报错问题咨询
Fortran假定秩哑元代码的Intel ifx编译报错问题
问题代码
Module assumed_rank_module Implicit None Contains Pure Function assumed_rank( a ) Result( s ) Integer :: s Real, Dimension( .. ), Intent( In ) :: a s = Size( a ) End Function assumed_rank End Module assumed_rank_module
问题描述
这段包含假定秩哑元的Fortran代码可正常通过gfortran 15.2.0、amdflang 21.0.0git、nvfortran 25.9编译,但使用Intel ifx 2025.2.0编译时,会因Dimension( .. )中..后的空格触发错误#5145,移除该空格后编译恢复正常。此前ifx曾曝出合规性问题,需明确该报错是否合理,是否属于编译器自身问题。
结论
这个报错不合理,属于Intel ifx的编译器问题。根据Fortran 2018及后续标准,假定秩数组的声明语法DIMENSION(..)中,..前后的空白字符是允许的——Fortran标准对空白的处理规则中,除了少数必须连续的符号(比如==、/=这类运算符),大部分语法元素间的空白仅作为分隔,不影响语法合法性。其他主流Fortran编译器均能正确解析带空格的( .. )写法,进一步说明ifx此处的语法解析存在疏漏,属于合规性bug。
内容的提问来源于stack exchange,提问作者Ian Bush
相关产品推荐
相关产品推荐

