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
如何让预处理器cpp在fortran函数名中展开宏_Fortran_Preprocessor - Fatal编程技术网

如何让预处理器cpp在fortran函数名中展开宏

如何让预处理器cpp在fortran函数名中展开宏,fortran,preprocessor,Fortran,Preprocessor,我在Fortran文件上使用cpp预处理器时遇到了一个非常简单的问题:为什么下面代码中的MACRO没有在子程序名fooMACRO中展开(但它在别处) 它给 $ gfortran-E helloworld.F # 1 "helloworld.F" # 1 "<command-line>" # 1 "helloworld.F"

我在Fortran文件上使用cpp预处理器时遇到了一个非常简单的问题:为什么下面代码中的
MACRO
没有在子程序名
fooMACRO
中展开(但它在别处)

它给

$ gfortran-E helloworld.F                                                                               
# 1 "helloworld.F"
# 1 "<command-line>"
# 1 "helloworld.F"



      subroutine fooMACRO()

      print*, 'bye'

      end subrountine

      program hello

      print*, 'hello world' 
      call fooMACRO()

      end program
$gfortran-E helloworld.F
#1“helloworld.F”
# 1 ""
#1“helloworld.F”
子程序fooMACRO()
打印*,“再见”
末端子计数器
节目你好
打印*,“你好,世界”
调用fooMACRO()
结束程序

C预处理器标记其输入“fooMACRO”是一个与“MACRO”不匹配的标记,因此它不会被扩展。在这种情况下,有没有办法强制扩展?您可以使用##进行字符串连接,但不能在gfortran中使用。@VladimirF有没有办法让gfortran将宏参数与文本连接起来?您可以单独使用cpp。
$ gfortran-E helloworld.F                                                                               
# 1 "helloworld.F"
# 1 "<command-line>"
# 1 "helloworld.F"



      subroutine fooMACRO()

      print*, 'bye'

      end subrountine

      program hello

      print*, 'hello world' 
      call fooMACRO()

      end program