• ベストアンサー

#defineの初歩的な質問

今c言語を勉強しているのですが #define TEST(tid)tid,#tid これはどういう意味なのでしょうか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★使い方? >#define TEST(tid)tid,#tid  本当にこの順序ですか?  私なら  #define TEST(tid)#tid,tid  と定義して  printf( "%s=%d\n", TEST(value) );  として使います。すると  printf( "%s=%d\n", "value", value );  となって  『value=123』  とvalue変数の値を表示します。 ・でももっと良い方法としては  #define debugValue(n) printf(#n " = %d\n",n)  #define debugString(s) printf(#s " = %s\n",s)  として  debugValue( value );  debugString( string );  とすれば整数値、文字列を変数名付きで表示してくれます。  このようなマクロを記述するときに活用できます。 ・詳しい内容はテキスト本を確認するか、  回答者No.1さんのリンクを参考にして下さい。

oeppu08
質問者

お礼

ご回答ありがとうございます。 使用例等詳細に記載していただきとても理解できました。 ありがとうございました。

その他の回答 (1)

  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

#define での # は文字列化演算子で引数が文字列として展開されます。 なので、その定義だと  TEST(123) は  123,"123" と展開されます。 [参考] C言語のプリプロセスのメモ(Hishidama's C pre-process Memo) http://www.ne.jp/asahi/hishidama/home/tech/c/preproc.html # 文字列化演算子ってあんまり初歩的じゃない気がする。

oeppu08
質問者

お礼

回答ありがとうございます。 参考のリンクにいろいろ記載されておりとても役に立ちました。 ありがとうございました。

関連するQ&A