C預處理器將源文本拆分爲令牌並僅執行與這些令牌匹配的擴展。通常這是預期的行爲,但有時不是。展開預處理器令牌的一部分
以這個例子爲例,我想以一種很好的方式實現一些類似模板的功能。通常它的實現是這樣的:
#define add_function_template(mytype) \
mytype add_##mytype(mytype a, mytype b) { \
return a + b; \
}
級聯運算符##
使這一擴大,但與反斜線引用整體功能非常麻煩。是否有可能爲宏體外的函數名稱做類似的擴展?
E.g.像
#define TYPENAME int
TYPENAME add_TYPENAME(TYPENAME a, TYPENAME b) {
return a + b;
}
標識符add_TYPENAME
沒有展開,其餘的是。沒有,我如何擴展這樣的標識符?輔助宏也可以,但我找不到任何理智的方法...
這絕對是一個有點醜陋,但如果預處理器兼容性好,我認爲它是可用的。 – dietr 2011-04-10 22:55:45