【发布时间】:2022-08-21 03:04:20
【问题描述】:
定义了一个选项(值 = 1 或 2)以在两条指令之间进行选择,我想与带有逗号的指令一起使用。
#define option 1
#if option == 1
#define my_instr(instr1, instr2) instr1
#else if option == 2
#define my_instr(instr1, instr2) instr2
#endif
它有效,但是当指令中有逗号时,我遇到了问题。
例如 :
program main
my_instr(print *,"opt 1", print * ,"opt 2")
end program main
无法编译(gftran -cpp):args 太多。我很好。
因此,为了转义逗号,添加了括号:my_instr((print *,"opt 1"), (print * ,"opt 2"))
但由于括号,它不再编译。
我该如何解决?
【问题讨论】:
-
I found a solution.将其发布为解决方案并接受答案。是的,要保留逗号,您必须将其放在括号内。 -
it is not recommanded to use VA_ARGS不不,__VA_ARGS__是标准配置。使用空参数列表(...)在技术上是不标准的。你必须(something, ...)。也就是说,我认为所有编译器都会编译得很好。 -
@KamilCuk。感谢cmets。我在
__VA_ARGS__上发布了答案并修改了我的评论。不要犹豫,编辑它。会比我的回答好。
标签: fortran c-preprocessor preprocessor