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