我遇到了以下宏的問題,並且我發現令牌粘貼操作符(##
)正在佔用static
和返回類型之間的空間:令牌粘貼操作符(##)在我的C++宏中佔用空格
#define MY_FUNCTION(aReturnType) statiC##aReturnType MyFunction() { }
所以預處理器是把這個:
MY_FUNCTION(bool)
到這一點:
staticbool MyFunction() { }
這造成了奇怪的編譯錯誤。
我想出了把周圍的static
關鍵字括號的想法:
// This works but is kind of weird
#define MY_FUNCTION(aReturnType) (static) ##aReturnType MyFunction() { }
有沒有更好的解決方案?
空白吃飯是該操作員工作描述的一部分。 –