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中的Makefile确定变量_Macros_Fortran_C Preprocessor - Fatal编程技术网

Macros 从Fortran中的Makefile确定变量

Macros 从Fortran中的Makefile确定变量,macros,fortran,c-preprocessor,Macros,Fortran,C Preprocessor,我想将我的数据与对齐!DIR$ATTRIBUTES ALIGN:NBYTE::X其中NBYTE在编译时定义。 我目前在每个源文件的顶部 #ifndef NBYTE #define NBYTE 64 #endif 但是,如果我只在任何地方使用NBYTE变量一次,就不能定义它。 所以我的两个问题是: 是否可以只定义一次宏并在任何地方使用它,而不在每个源文件中包含文件或宏 我可以在Makefile中定义变量并在Fortran代码中使用它吗 大多数编译器允许您使用C型预处理器对源代码进行预处理

我想将我的数据与
对齐!DIR$ATTRIBUTES ALIGN:NBYTE::X
其中
NBYTE
在编译时定义。 我目前在每个源文件的顶部

 #ifndef NBYTE
  #define NBYTE 64
 #endif
但是,如果我只在任何地方使用
NBYTE
变量一次,就不能定义它。 所以我的两个问题是:

  • 是否可以只定义一次宏并在任何地方使用它,而不在每个源文件中包含文件或宏

  • 我可以在Makefile中定义变量并在Fortran代码中使用它吗


  • 大多数编译器允许您使用C型预处理器对源代码进行预处理。同时,它们允许您通过编译器的命令行传递预处理器宏。在
    gfortran
    中,可以使用以下语法:

    -Dname=definition
    定义的内容被标记和处理,就像它们出现在
    #define
    指令的翻译第三阶段一样。特别是,定义将被嵌入的换行符截断


    大多数编译器允许您使用C型预处理器对源代码进行预处理。同时,它们允许您通过编译器的命令行传递预处理器宏。在
    gfortran
    中,可以使用以下语法:

    -Dname=definition
    定义的内容被标记和处理,就像它们出现在
    #define
    指令的翻译第三阶段一样。特别是,定义将被嵌入的换行符截断


    您使用哪种编译器?Fortran Intel compiler您使用哪种编译器?Fortran Intel compiler o如果我在编译代码时说-DNBYTE=64并添加该标志,则it@A2LBK因为这是一样的syntax@A2LBK是的,但是你需要确保你的代码是经过预处理的。是的,我是用-fpp标志来做这件事的。非常感谢!因此,如果我说-DNBYTE=64并在编译代码时添加该标志,那么it@A2LBK因为这是一样的syntax@A2LBK是的,但是你需要确保你的代码是经过预处理的。是的,我是用-fpp标志来做这件事的。非常感谢!