我有這樣簡單的代碼:當宏使用clang擴展時,爲什麼'##'不會消失?
#define THE_MACRO World
void Hello##THE_MACRO()
{
}
通過預處理它clang++ code.cpp -E
我得到這樣的結果:
# 1 "code.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 326 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "code.cpp" 2
void Hello##World()
{
}
請注意##
還停留在代碼,並會導致編譯錯誤:
code.cpp:3:6: error: variable has incomplete type 'void'
void Hello##THE_MACRO()
^
code.cpp:3:11: error: expected ';' after top level declarator
void Hello##THE_MACRO()
^
;
我無法確定代碼有什麼問題。應該爲clang提供更多的參數嗎?
##只在宏內工作,不是? – bmargulies