2

必要に応じて新しいクラスを作成できる #define を使用してマクロを作成しようとしています。これが私のコードです:

#pragma once

#include "PDDefFileReader.h"

#define SET_LANG( lang ) *( new std::string( lang ) ) 

#define LANG( cName, lName )
class cName
{
public:
    cName()
    {
        _langName = SET_LANG( lName );                 <- HERE !!!!
        _reader = new PDDefFileReader( _langName );
    }
    ~cName(){}

    std::string Str(){ return _langName; }

private:
    PDDefFileReader* _reader;
    std::string _langName;
};

したがって、定義の「lName」パラメーターを std::string オブジェクトとして取得する場合、どうすればよいか知りたいです。今のところ(「HERE !!!!」の行で)エラーが発生します:

Error: Identifier "lName" is undefined

私がやりたいことが可能かどうか、何か考えはありますか?

コンテキストを説明するために、カスタムの多言語リーダーを作成しています。したがって、次のようなことを行うことで、新しい言語を簡単に定義できます。

LANG( Cpp, "cpp" )
LANG( Perl, "pl" )

ありがとう !!

4

2 に答える 2

5

\マクロは空です。デフォルトでは、最後にa を使用しない限り、次の行に進みません。

#define #define LANG( cName, lName ) \
class cName \
{ \
    ...
于 2013-05-15T14:01:03.970 に答える