プリプロセッサディレクティブについて – プログラミング – Home

プリプロセッサディレクティブについて
 
通知
すべてクリア

[解決済] プリプロセッサディレクティブについて


かつや
 かつや
(@かつや)
ゲスト
結合: 25年前
投稿: 8
Topic starter  

またお世話になります。
現在ログを表示させるクラスを作成してます。
その中で、指定した変数の変数名と変数の値を文字列として
取得したいと思い、ネットで方法を探した所、以下のような
構文を見つけました。

#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)です。
環境依存はないと思いますが念の為。


引用未解決
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

本家 MSDN ページだとこの辺から見ていくといいか
http://msdn2.microsoft.com/ja-jp/library/wy090hkc.aspx
英語なんで読めネェってのは無しにしておくんなまし

日本語のほうがよければたとえば
http://wisdom.sakura.ne.jp/programming/c/c42.html


返信引用
かつや
 かつや
(@かつや)
ゲスト
結合: 25年前
投稿: 8
Topic starter  

tetrapodさん感謝です。
結論としては#を使うしかなさそうですね。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました