如何使用 GNU gfortran 对预处理器宏进行字符串化?我想将宏定义传递给 GNU gfortran,然后将其用作代码中的字符串。
实际上,我想这样做:
program test
implicit none
character (len=:), allocatable :: astring
astring = MYMACRO
write (*, *) astring
end program test
Run Code Online (Sandbox Code Playgroud)
然后构建:
gfortran -DMYMACRO=hello test.F90
Run Code Online (Sandbox Code Playgroud)
我尝试创建各种宏,例如:
#define STRINGIFY_(x) #x
#define STRINGIFY(x) STRINGIFY_(x)
...
astring = STRINGIFY(MYMACRO)
Run Code Online (Sandbox Code Playgroud)
但这不适用于 gfortran 预处理器。
我还尝试使用不同风格的宏:
#define STRINGIFY(x) "x"
...
astring = STRINGIFY(MYMACRO)
Run Code Online (Sandbox Code Playgroud)
但这只会创建一个包含文本“MYMACRO”的字符串。
然后我尝试将宏定义更改为:
-DMYMACRO=\"hello\"
Run Code Online (Sandbox Code Playgroud)
但这在构建过程中导致了无关的问题。
感谢您的帮助