【发布时间】:2013-09-04 08:35:29
【问题描述】:
我想创建一个宏,它将接受任意代码块作为其参数,如
FOR_VECTOR( type, vect, code_block ) \
for( vector<type>::iterator i=vect.begin(); i!=vect.end(); ++i ) { \
code_block; \
}
问题是参数中的代码块,其中可能包含任意数量的,和)字符。
有什么好的解决办法吗?
【问题讨论】:
-
你的意思是除了“不要那样做”吗?你熟悉函数吗?函子?或者在 C++11 中,lamdas ?
-
他 ^^ 说的。除此之外,将其括起来。预处理器足够聪明,可以识别括号。
-
好的,我会考虑所有替代方案,但我想要这样一个宏:) 而且我不能用括号括住完整的代码块,只有一个表达式。