此选项仅适用于 .F、.F90、.F95 和 .F03 源文件。
–Dname=def 将 name 定义为具有值 def
–Dname 将 name 定义为 1
在命令行上,此选项将定义 name,就如同
#define name[=def]
已经出现在源文件中。如果未指定 =def,则名称 name 的值定义为 1。宏符号 name 会传递到预处理程序 fpp(或 cpp-请参见 -xpp 选项)进行扩展。
预定义的宏符号具有两个前导下划线。Fortran 语法可能不支持这些宏的实际值-它们只应出现在 fpp 或 cpp 预处理程序指令中。(请注意两个前导下划线。)
产品版本是在 _ _SUNPRO_F90 和 _ _SUNPRO_F95 中预定义的(用十六进制表示)。例如,对于 Solaris Studio 12 发行版,_ _SUNPRO_F95 为 0x850。
以下宏是在相应系统上预定义的:
_ _sparc、_ _unix、_ _sun、_ _SVR4、__i386、_ _SunOS_5_6、_ _SunOS_5_7、_ _SunOS_5_8、_ _SunOS_5_9 和 _ _SunOS_5_10
例如,值 _ _sparc 是在 SPARC 系统上定义的。
以下预定义值不带下划线,但是在以后的发行版中可能会删除这些值: sparc、unix 和 sun。
在 SPARC V9 系统上,还定义了 _ _sparcv9 宏。
在 64 位 x86 系统上,定义了宏 __amd64 和 __x86_64。
使用详细选项 (-v) 进行编译可查看由编译器创建的定义。
您可以在类似如下的预处理程序条件中使用这些值:
#ifdef _ _sparc
缺省情况下,f95 使用 fpp(1) 预处理程序。与 C 预处理程序 cpp(1) 一样,fpp 会扩展源代码宏并允许对代码进行条件编译。与 cpp 不同的是,fpp 能够识别 Fortran 语法,并作为首选的 Fortran 预处理程序。使用 -xpp=cpp 标志可以强制编译器明确使用 cpp 而非 fpp。