質問

したいと言うを生成するマリストの識別子の文字列

enum
{
NAME_ONE,
NAME_TWO,
NAME_THREE
};

myFunction(NAME_ONE, "NAME_ONE");
myFunction(NAME_TWO, "NAME_TWO");
myFunction(NAME_THREE, "NAME_THREE");

..なく繰り返し自分自身にならずに、自動生成のコードは、C/C++のマクロ

初期推:

として追加できる、#includeファイルを含む

myDefine(NAME_ONE)
myDefine(NAME_TWO)
myDefine(NAME_THREE)

その使い回のように:

#define myDefine(a) a,
enum {
#include "definitions"
}
#undef myDefine

#define myDefine(a) myFunc(a, "a");
#include "definitions"
#undef myDefine

で#defineないよう入れたパラメータ内の文字列?

役に立ちましたか?

解決

目#defineしている必要があり、プリプロセッサの演算子のようになります:

#define myDefine(a) myFunc(a, #a);

に変換する引数文字列になります。

他のヒント

こちらは良い方法を宣言するのに名前リスト:

#define FOR_ALL_FUNCTIONS(F)\
  F(NameOne)\
  F(NameTwo)\
  F(NameThree)\

#define DECLARE_FUNCTION(N)\
    void N();

#define IMPLEMENT_FUNCTION(N)\
    void N(){}

FOR_ALL_FUNCTIONS(DECLARE_FUNCTION);
FOR_ALL_FUNCTIONS(IMPLEMENT_FUNCTION);

このようにこの名前リストで再使用することができます。いプロトタイピングのための新しい言語機能は、位置しています。そのため、他には何もないいから教えてもらうのが気に自分の発明された。合いなが彼らからのコメント:"マクロは、"...:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top