Sun Studio 12:Fortran 用户指南

2.3.1.2 IGNORE_TKR 指令

此指令导致编译器在解析特定调用时,忽略在通用过程接口中出现的指定哑元名称的类型、种类和等级。

例如,在下面的过程接口中,此指令指定 SRC 可以是任意数据类型,但 LEN 可以是 KIND=4KIND=8。此接口块为通用过程名称定义两个特定的过程。此示例以 Fortran 95 自由格式显示。


INTERFACE BLCKX

SUBROUTINE BLCK_32(LEN,SRC)
  REAL SRC(1)
!$PRAGMA IGNORE_TKR SRC
  INTEGER (KIND=4) LEN
END SUBROUTINE

SUBROUTINE BLCK_64(LEN,SRC)
  REAL SRC(1)
!$PRAGMA IGNORE_TKR SRC
  INTEGER (KIND=8) LEN
END SUBROUTINE

END INTERFACE

The subroutine call:

INTEGER L
REAL S(100)
CALL BLCKX(L,S)

在进行正常编译时,BLCKX 调用将调用 BLCK_32;在使用 -xtypemap=integer:64 进行编译时,将调用 BLCK_64S 的实际类型并不能确定要调用哪个例程。对于基于参数类型、种类或等级来调用特定库例程的包装器来说,这可大大简化为其编写通用接口的工作。

请注意,无法在该指令中指定假定形状数组、Fortran 指针或可分配数组的哑元。如果未指定名称,则该指令将应用于过程的所有哑元,但假定形状数组、Fortran 指针或可分配数组的哑元除外。