2011-09-14 13 views
0

struct変数の名前をcharに変換する必要があるという問題があります。例えば:私の関数はCARINFO aの引数を取るときstructをcharに変換する

struct CARINFO a; 

は、私は、関数でa"a"の両方を使用します。

誰でも手助けできますか?

+0

I * think *あなたはC言語について話していますが、これを確認できますか? –

+0

あなたはあなたがこれをやりたいことを言ったらもっと良い答えが得られるかもしれませんが、短い答えはいいえ、あなたはできません。 –

+0

はいこれはcです。 これは車の情報構造がどのように見えるかです。 { \t/*車のフロントの位置。すべての車は、 \tが北西に向いていると仮定されているので、この位置は \t車の北西部*/ \t LOCATIONフロントを表します。 \t/*車の向き*/ \tオリエンテーション向き。 \t/*車の長さ*/ \t長さ; } CARINFO; 残念ながら私はそれを変更することはできません。 – pseudoabdul

答えて

1

Cでできることは、1つのマクロを使用して文字列と変数の両方を定義することです。変数の名前を再発見するためのランタイム検査はありません。

0

マクロに関数を作成し、#演算子(文字列)を使用してhte引数の名前を取得することで、これを実行できます。例えば

#define MYFUNC(x) \ 
do { real_func(x); printf("parameter name: " #x "\n"); } while (0) 
2

あなたは、実際の関数にあなたの構造体へのポインタと、その名前の両方を渡すためにマクロを使用することができます。

struct bar { 
    // blah 
}; 

void actual_foo(struct bar *b, char *bname) { 
    // whatever 
} 

#define foo(bar) actual_foo(&(bar), #bar) 

int main() { 
    struct bar b; 
    foo(b); 
}