- ベストアンサー
正常時のログ出力方法(#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.で記述した方法よりスマートな方法・より良い方法がありましたら教えていただけないでしょうか? よろしくお願いします。
- みんなの回答 (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 で、括らなくてもよくなります。
その他の回答 (1)
- t_nojiri
- ベストアンサー率28% (595/2071)
#ifdefは、プリコンパイルで切られるから、別段こだわる必要もあまり無いと思いますが、多分今回のデバッグで違和感があるのは、ifの判定した後に出すからです。 ret = syori(); #ifdef DEBUGLOG printf("syori() ret = [%d]\n", ret); #endif if(ret != 0){ /* 異常終了(≠0)時 */ printf("syori() エラー発生\n"); } とかにすれば、retの値が見えますよ。
お礼
#ifdefの部分を前にもってくるのは考えていませんでした(^^; ありがとうございます
お礼
この方法だとすっきりして見えます 回答をありがとうございました