将霍尔瑞斯常量视为实际参数列表中的字符串。
如果使用 -xhasc=yes,则当霍尔瑞斯常量在子例程或函数调用中作为实际参数出现时,编译器将霍尔瑞斯常量视为字符串。这是缺省值,并且符合 Fortran 标准。(编译器生成的实际调用列表包含每个字符串的隐藏字符串长度。)
如果使用 -xhasc=no,则霍尔瑞斯常量将被视为子程序调用中的无类型值,并且只将它们的地址放在实际参数列表中。(传递到子程序的实际调用列表中不会生成字符串长度。)
如果例程调用带有霍尔瑞斯常量的子程序,并且调用的子程序要求参数为 INTEGER(或除 CHARACTER 以外的任意类型),请使用 -xhasc=no 编译例程。
示例:
demo% cat hasc.f call z(4habcd, ’abcdefg’) end subroutine z(i, s) integer i character *(*) s print *, "string length = ", len(s) return end demo% f95 -o has0 hasc.f demo% has0 string length = 4 <-- should be 7 demo% f95 -o has1 -xhasc=no hasc.f demo% has1 string length = 7 <-- now correct length for s
将 4habcd 传递到 z 是通过使用 -xhasc=no 进行编译来正确处理的。
提供此标记是为了帮助移植传统的 Fortran 77 程序。