Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macros Fortran代码中的预处理器宏在Windows上不工作_Macros_Fortran_Gfortran - Fatal编程技术网

Macros Fortran代码中的预处理器宏在Windows上不工作

Macros Fortran代码中的预处理器宏在Windows上不工作,macros,fortran,gfortran,Macros,Fortran,Gfortran,亲爱的各位,我有一个包含预处理器宏的Fortran小程序。下面是一个简单的例子。在mac os x上,它运行良好,但当我在windows 7(64位)上编译它时,它总是打印未知操作系统的。我正在Windows7上使用gfortran-4.8.0(mingw32) program foo implicit integer(i-n), double precision (a-h,o-p), + character*8(x-z) * #ifdef _WIN64

亲爱的各位,我有一个包含预处理器宏的Fortran小程序。下面是一个简单的例子。在mac os x上,它运行良好,但当我在windows 7(64位)上编译它时,它总是打印未知操作系统的
。我正在Windows7上使用gfortran-4.8.0(mingw32)

      program foo
      implicit integer(i-n), double precision (a-h,o-p),
     + character*8(x-z)
*
#ifdef _WIN64
      zterm = 'wxt'
#elif _WIN32
      zterm = 'wxt'
#elif __APPLE__
      zterm = 'aqua'
#elif __linux
      zterm = 'x11'
#elif __unix
      zterm = 'x11'
#elif __posix
      zterm = 'x11'
#else
      print*, 'unknown operating system'
#endif
      end program foo
#ifdef_WIN64
更改为
#if defined(_WIN64)
没有帮助。如果您有任何建议,我们将不胜感激。

这可能是您的建议。由于GFortran开始使用libcpp,而不是在单独的进程中运行cpp,因此缺少许多内置宏

作为一种变通方法,您可以在构建过程中使用这些内置宏定义生成一个文件,然后将其包括在内。例如,有一个运行的make目标

gcc -E -dM - < /dev/null > builtins.inc

在Mac上,我不向编译器传递任何标志。只是正常的
gfortran-o foo foo.F
,它工作正常。因此,我在windows上也做了同样的操作,但在那里它不起作用。根据这一点,.F90后缀应该足够了。而且
\u WIN64
应该正常。不过,我不使用Windows。嗨,弗拉基米尔,谢谢,我试过
gfortran-cpp-o foo foo.F
,但问题仍然存在。你有本机编译器或cygwin吗?我有本机编译器。下面是编译器信息。
#include "builtins.inc"