为什么gfortran C预处理器连接令牌不起作用?

时间:2017-08-08 18:10:36

标签: fortran c-preprocessor gfortran

我正在尝试为子例程的名称添加后缀,但是我无法使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)。为什么它在我的情况下按字面意思复制“##”,如何修复它以添加后缀?

0 个答案:

没有答案