• ベストアンサー

正常時のログ出力方法(#ifdef DEBUGLOG使用)

ret = syori(); if(ret != 0){ /* 異常終了(≠0)時 */ printf("error\n"); } という処理があった場合、defineでDEBUGLOGを定義している時は正常終了のメッセージを出すようにしたいと思っています。 そこで質問なのですが、 1.以下のような処理にすると問題があるのでしょうか?「else」の部分があまり好ましいと思えなくて・・・ ret = syori(); if(ret != 0){ /* 異常終了(≠0)時 */ printf("syori() エラー発生\n"); } #ifdef DEBUGLOG else { printf("syori() 正常終了\n"); } #endif 2.1.で記述した方法よりスマートな方法・より良い方法がありましたら教えていただけないでしょうか? よろしくお願いします。

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

  • ベストアンサー
noname#15691
noname#15691
回答No.2

----------------------------------------- #define DEBUGLOG #ifdef DEBUGLOG #define DEBUGDISP(x) x #else #define DEBUGDISP(x) #endif ----------------------------------------- ret = syori(); if(ret != 0){ /* 異常終了(≠0)時 */ printf("syori() エラー発生\n"); } DEBUGDISP(else { printf("syori() 正常終了\n"); } ) ----------------------------------------- DEBUGLOGが有効の時だけ、DEBUGDISP内が展開されます。 つまり、こうすれば、いちいち、 #ifdef DEBUGLOG #endif で、括らなくてもよくなります。

doradora55
質問者

お礼

この方法だとすっきりして見えます 回答をありがとうございました

その他の回答 (1)

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

#ifdefは、プリコンパイルで切られるから、別段こだわる必要もあまり無いと思いますが、多分今回のデバッグで違和感があるのは、ifの判定した後に出すからです。 ret = syori(); #ifdef DEBUGLOG printf("syori() ret = [%d]\n", ret); #endif if(ret != 0){ /* 異常終了(≠0)時 */ printf("syori() エラー発生\n"); } とかにすれば、retの値が見えますよ。

doradora55
質問者

お礼

#ifdefの部分を前にもってくるのは考えていませんでした(^^; ありがとうございます

関連するQ&A