2016-06-15 191 views
-2
using namespace std; 

class cName 
{ 
public: 
    cName(); 
    void fName(){}; 
}; 

#define LNA_FUNCTION(className, funcName) \ 
static LNA_FUNCTION<className> funcName##className##Func(#className, #funcName, className :: funcName) 

LNA_FUNCTION(cName, fName); 

int _tmain(int argc, _TCHAR* argv[]) 
{ 

} 

任何人都可以請爲什麼在編譯VS 2008時顯示此錯誤?編譯錯誤C2143:語法錯誤:缺少';'之前'<'

編譯錯誤C2143:語法錯誤:缺少';' '<'

+0

請格式化您的代碼。 – Xiobiq

+1

該宏擴展爲'靜態LNA_FUNCTION '...這是一個語法錯誤 –

回答

3

沒有看到所有的代碼,您可能沒有定義一個名爲LNA_FUNCTION的模板類。你有你所有的依賴嗎?

作爲一個旁註,我強烈建議不要寫一個類,然後定義一個同名的預處理器宏。它可能不會做你想做的事情。

相關問題