不思議な光景に出くわの両方のC識別子の文字列?
-
02-07-2019 - |
質問
したいと言うを生成するマリストの識別子の文字列
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);
このようにこの名前リストで再使用することができます。いプロトタイピングのための新しい言語機能は、位置しています。そのため、他には何もないいから教えてもらうのが気に自分の発明された。合いなが彼らからのコメント:"マクロは、"...:)
所属していません StackOverflow