またお世話になります。
現在ログを表示させるクラスを作成してます。
その中で、指定した変数の変数名と変数の値を文字列として
取得したいと思い、ネットで方法を探した所、以下のような
構文を見つけました。
#define dprint(expr) printf( #expr = %d, expr );
ここで出てくる「#expr」の意味と言うか、どういった仕様の
ものなのでしょうか?
実際に
int a = 1;
dprint(a);
した場合「a = 1」と表示されるので、変数名を取得する為の
ものだとは思うのですが、調べても見つけることが出来なかった
ので、この「#」の使い方と言うのもお聞きしたいのですが。
プロプロセッサは#defineや#ifdef程度しか使った事がないので、
これを機会にもうちょっと便利な使い方が出来ればと思ってます・・・。
また、ついでになってしまいますが上記の様な方法以外で、
プログラム中で任意の変数名を文字列で取得する方法って
ないのでしょうか?
#define getVarName(expr1, expr2) sprintf(expr1, #expr2);
一応上記を参考にしてこの構文でexpr2の変数名が文字列として
expr1に格納されましたが・・・。
またまた恥ずかしい質問なのかも知れませんが、宜しくお願い致します。
環境はWinXP+VC++6.0(SP6)です。
環境依存はないと思いますが念の為。
本家 MSDN ページだとこの辺から見ていくといいか
http://msdn2.microsoft.com/ja-jp/library/wy090hkc.aspx
英語なんで読めネェってのは無しにしておくんなまし
日本語のほうがよければたとえば
http://wisdom.sakura.ne.jp/programming/c/c42.html
tetrapodさん感謝です。
結論としては#を使うしかなさそうですね。
ありがとうございました。