我想這樣做如下:如何對範圍運算符使用令牌連接?
#define CODE_BLOCK(id) \
do { \
someNameSpace::##id foo; \
foo.ParseFromString(...); \
print_##id(foo);
} while(0)
[...]
CODE_BLOCK(BlahStream);
所以基本上,我想FOO聲明爲類型someNameSpace :: ID其中,ID宏參數。 print_id在別處定義。無論如何,g ++抱怨的消息:
error: pasting "::" and "BlahStream" does not give a valid preprocessing token
反正有這個嗎?
如果有幫助,foo來自某個用戶定義的googleprotocol緩衝區。我的g ++版本在debian linux上是4.7.2。
謝謝。
謝謝!這似乎奏效了。你爲我節省了很多工作。該宏比示例稍大。 (當我被允許時,我會檢查你的標記,我的帖子上有一個隱藏的計時器。) – Bitdiot
謝謝Rapptz,今天幫助我 – Arun