2016-04-30 15 views
0

私はこのような機能を持っている:引数から関数に配列名を出力する方法は?

foo(int a[], int b); 

を、私は、関数で配列の名前を印刷したいです。私が電話すると、

foo(cards, 5); 

私はこれを印刷したい:array name:cards;array size:5。私はこれをどのようにするべきですか?

+0

可能な複製http://stackoverflow.com/questions/15349761/get-called-function-name-as-string –

+0

いいえ、それは囲む関数の名前を取得することを扱っていません。 –

答えて

3

できません。あなたのプログラムが実行される頃には、ソースコードで使われた "cards"という名前はもはや利用できません。しかし、あなたはできる:

void foo(int *a, int b, const char *name); 
... 
foo(cards, 5, "cards"); 
1

ラッパーマクロを作成します。

#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);を使用してください。

関連する問題