2016-06-15 16 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:構文エラー: ';'がありません。 before '<'

コンパイルエラーC2143:構文エラー: ';'がありません。 「<」

+0

コードをフォーマットしてください。 – Xiobiq

+1

マクロは 'static LNA_FUNCTION ' ...に展開されます。これは構文エラーです –

答えて

3

あなたのコードをすべて見ることなく、LNA_FUNCTIONというテンプレートクラスを定義していない可能性があります。 #includeあなたの依存関係はどれですか?

サイドノートとして、クラスを作成してから、同じ名前のプリプロセッサマクロを定義することを強くお勧めします。おそらく、あなたがしたいことはしません。

関連する問題