ifort 中的标志 -r8 会影响声明为 real*4 的变量吗?

Posted

技术标签:

【中文标题】ifort 中的标志 -r8 会影响声明为 real*4 的变量吗?【英文标题】:Does the flag -r8 in ifort affect the variables declared as real*4? 【发布时间】:2014-02-11 20:32:56 【问题描述】:

ifort 编译器将标志 -r8 描述为:

   -r8    Makes default real and complex variables  8  bytes  long.  REAL
          declarations are treated as DOUBLE PRECISION (REAL(KIND=8)) and
          COMPLEX  declarations  are  treated  as  DOUBLE  COMPLEX  (COM-
          PLEX(KIND=8)).

这是否意味着只有被声明为实数的变量被转换为real*8,或者每个实数(甚至,比如real*4)被转换为real*8

【问题讨论】:

我从来没有想过编译器可能会覆盖一个明确的种类声明,甚至是一个非标准的声明,例如real*4。但是,如果我确实想到了这个想法,我会编写一个小测试并找出答案。你为什么不呢?它应该只需要你 5 分钟左右。 是的,我花了 5 分钟测试。 【参考方案1】:

手册明确指出该标志是关于默认实数和复数变量。 Real*4 声明通常是有原因的,当默认类型更改时编译器不应更改这些声明。

【讨论】:

以上是关于ifort 中的标志 -r8 会影响声明为 real*4 的变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

Makefile:相似文件的不同标志

带有 ifort 的 tracebackqq() 导致分段错误

CMake Fortran 编译器相关标志

使用 ifort 的指数的 Fortran 运算符优先级错误

PGI 遇到的坑

GCC 中 -x 标志的输入和输出“语言”是啥意思?