我正在尝试为子例程的名称添加后缀,但是我无法使C预处理器的串联标记正常工作。我有以下示例:
test.f90:
#define ADD_SUFFIX(name) name##_r
subroutine ADD_SUFFIX(mysub)()
print*,'Success'
end subroutine
program test
implicit none
call mysub_r()
end program
然后我运行gfortran -cpp test.f90 -o test.x
并获取:
test.f90:3.16:
subroutine mysub##_r
1
Error: Syntax error in SUBROUTINE statement at (1)
我在使用预处理程序指令方面不是很有经验,而且在我看到的任何地方,我都看到人们使用这样的运算符(例如,参见here)。为什么它在我的情况下按字面意思复制“##”,如何修复它以添加后缀?