私はこのような機能を持っている:引数から関数に配列名を出力する方法は?
foo(int a[], int b);
を、私は、関数で配列の名前を印刷したいです。私が電話すると、
foo(cards, 5);
私はこれを印刷したい:array name:cards;array size:5
。私はこれをどのようにするべきですか?
私はこのような機能を持っている:引数から関数に配列名を出力する方法は?
foo(int a[], int b);
を、私は、関数で配列の名前を印刷したいです。私が電話すると、
foo(cards, 5);
私はこれを印刷したい:array name:cards;array size:5
。私はこれをどのようにするべきですか?
できません。あなたのプログラムが実行される頃には、ソースコードで使われた "cards"という名前はもはや利用できません。しかし、あなたはできる:
void foo(int *a, int b, const char *name);
...
foo(cards, 5, "cards");
ラッパーマクロを作成します。
#define STR(v) #v
#define FOO(name, value) do{ fprintf(stderr, "array name:%s;array size:%d\n", STR(name), value);foo(name, value); }while(0)
代わりにFOO(cards, 5);
を使用してください。
可能な複製http://stackoverflow.com/questions/15349761/get-called-function-name-as-string –
いいえ、それは囲む関数の名前を取得することを扱っていません。 –