bcc55 [C90 ?] + Windows で C 言語の勉強をしている者です。
デバッグ時にだけ printf で数値を表示し、
デバッグ時でない時には何もしないような機能を持った関数を使いたいです。
(1) #define debug_print 1 ? (void) 0 : printf
(2) #define debug_print 1 ? 0 : printf
(3) #define debug_print //
仮に debug_print と言う名前にします。
http://tricky-code.net/nicecode/code10.php
を見ると
#define debug_print 1 ? (void) 0 : printf
とするような方法が記載されていましたが
エラー E2468 test.c 28: void 型の値は許されない
と言うエラーのため
#define debug_print 1 ? 0 : printf
として使う事を考えました。
しかし、この状態で
int i=777;
debug_print("%d \n",i);
と言う具合に使うと
警告 W8004 test.c 27: 'i' に代入した値は使われていない(関数 main )
と言う警告が出ます。
次に
#define debug_print //
としてみました。
これでも
警告 W8019 test.c 25: コードは効果を持たない(関数 main )
と言う警告が出ます。
私の職場では警告 (ワーニング) の発生も禁止されており
できれば警告が出ないような方法がないか、教えて頂きたいです。
以上、よろしくお願いします。
#include <stdio.h>
#if 0 // デバッグ時はここを 1 に
#define debug_print printf
#else
// #define debug_print 1 ? (void) 0 : printf /* エラー E2468 test.c 28: void 型の値は許されない(関数 main ) */
// #define debug_print 1 ? 0 : printf /* 警告 W8004 test.c 27: 'i' に代入した値は使われていない(関数 main ) */
#define debug_print // /* bcc55 では 警告 W8019 test.c 25: コードは効果を持たない(関数 main ) */
#endif
void main()
{
int i=777;
debug_print("%d \n",i);
}