我有#define
d預處理器常量叫做CurrentClass
。
宏Method
讀取此常量以構建當前類的方法聲明。使用#define from宏
#define CurrentClass Foo
#define Method(x) \
CurrentClass ## _ ## x
void Method(bar)() {
}
預處理產生以下結果:
void CurrentClass_bar() {
}
顯然,這裏CurrentClass_bar
應該是Foo_bar
。
另一方面,以下產生正確的結果。
#define Method(class, x) \
class ## _ ## x
void Method(Foo, bar)() {
}
出於某種原因,Method
不能連接不斷CurrentClass
別的東西。單獨產生CurrentClass
字符串。
任何想法這裏發生了什麼?
這只是預處理器的工作方式。嘗試'#define Method(x)_Method(CurrentClass,x)/ #define _Method(a,b)a ## _ ## b'。 – Kevin 2014-10-31 23:04:15
@Kevin Nope,同樣的結果。 – NSAddict 2014-10-31 23:08:17