4. Solaris Studio Fortran 的功能与差异
4.3.3 声明 Cray 指针和 Fortran 95 指针
4.4 STRUCTURE 和 UNION (VAX Fortran)
4.6.11 Fortran 2003 FLUSH I/O 语句
4.6.12 Fortran 2003 POINTER INTENT 功能
4.6.13 Fortran 2003 中增强的数组构造函数
4.6.14 Fortran 2003 和 Fortran 2008 的其他功能
编译器指令指示编译器执行某些特殊的操作。指令又称 pragma。
可以将编译器指令作为一个或多个文本行插入到源程序中。每一行看起来就像注释一样,但其中包含的其他字符可将其标识为不仅仅是该编译器的注释。对于大多数其他编译器,它被处理为注释,因此具有一定的代码移植性。
有关 Fortran 指令的完整摘要,请参见附录 C。
除了1.8 命令行帮助中介绍的指令外,f95 还可识别其自己的特殊指令。这些指令使用以下语法:
!DIR$ d1, d2, …
将后跟空格的 !DIR$ 放在行中的任意位置。
!DIR$ 字符是行中的第一个非空字符(实际上就是非空白)。
指令在空格后面列出。
在初始指令行中,紧跟在 !DIR$ 之后的位置中为空格、制表符或换行符。
在连续指令行中,紧跟在 !DIR$ 之后的位置中为空格、制表符或换行符以外的字符。
因此,第 1 至第 5 列中的 !DIR$ 既用于自由格式源代码又用于固定格式源代码。
这些指令指定指令行后面行的源代码格式。
它们适用于所在文件的其余部分,或者在遇到下一个 FREE 或 FIXED 指令之前的部分。
它们用于切换源文件中的源代码格式。
它们用于切换 INCLUDE 文件的源代码格式。您可以将指令插入在 INCLUDE 文件的开头。在处理 INCLUDE 文件后,源代码格式恢复为处理 INCLUDE 文件之前使用的格式。
每个指令必须单独出现在编译器指令行中(没有续行)。
每个指令可以出现在源代码中的任意位置。其他指令必须出现在它们所影响的程序单元中。
示例: 一个 FREE 指令。
!DIR$ FREE DO i = 1, n a(i) = b(i) * c(i) END DO
并行化指令是一种特殊的注释,它指示编译器尝试并行处理下一个 DO 循环。附录 D 中对这些指令进行概述,《Fortran 编程指南》中有关并行化的一章介绍了这些指令。Sun 和 Cray 样式并行化指令现已过时,应首选使用 OpenMP Fortran API 指令和并行化模型。《OpenMP API 用户指南》中介绍了 OpenMP 并行化。