Sun Studio 12:Fortran 用户指南

4.8 指令

编译器指令指示编译器执行某些特殊的操作。指令又称 pragma

可以将编译器指令作为一个或多个文本行插入到源程序中。每一行看起来就像注释一样,但其中包含的其他字符可将其标识为不仅仅是该编译器的注释。对于大多数其他编译器,它被处理为注释,因此具有一定的代码移植性。

Sun 风格的并行化指令是 f95 -explicitpar 的缺省设置。要切换到 Cray 风格的指令,请使用 -mp=cray 编译器命令行标志。OpenMP 指令的显式并行化要求使用-openmp 进行编译。

表 C–1 提供了 Fortran 指令的完整摘要。

4.8.1 特殊 f95 指令行的格式

除了1.9 命令行帮助中介绍的指令外,f95 还可识别其自己的特殊指令。这些指令使用以下语法:


!DIR$ d1, d2, …

4.8.1.1 固定格式源代码

4.8.1.2 自由格式源代码

因此,第 1 至第 5 列中的 !DIR$ 既用于自由格式源代码又用于固定格式源代码。

4.8.2 FIXEDFREE 指令

这些指令指定指令行后面行的源代码格式。

4.8.2.1 作用域

它们适用于所在文件的其余部分,或者在遇到下一个 FREEFIXED 指令之前的部分。

4.8.2.2 用法

4.8.2.3 限制

FREE/FIXED 指令:

示例:一个 FREE 指令。


!DIR$ FREE
    DO i = 1, n
        a(i) = b(i) * c(i)
    END DO

4.8.3 并行化指令

并行化指令是一种特殊的注释,它指示编译器尝试并行处理下一个 DO 循环。附录 D 中对这些指令进行概述,《Fortran 编程指南》中有关并行化的一章介绍了这些指令。f95 可识别 Sun 和 Cray 风格的并行化指令以及 OpenMP Fortran API 指令。《OpenMP API 用户指南》中介绍了 OpenMP 并行化。