1. g++ を使用している場合は、-D フラグを使用できます。これにより、コンパイラーは選択したマクロを定義できます。
の定義
例えば :
#ifdef DEBUG_FLAG
printf("My error message");
#endif
2.これもエレガントではないことに同意するので、少し良くするために:
void verbose(const char * fmt, ... )
{
va_list args; /* Used as a pointer to the next variable argument. */
va_start( args, fmt ); /* Initialize the pointer to arguments. */
#ifdef DEBUG_FLAG
printf(fmt, &args);
#endif
/*This isn't tested, the point is to be able to pass args to
printf*/
}
printf のように使用できること:
verbose("Error number %d\n",errorno);
3.より簡単で C++ や Unix に似た 3 番目の解決策は、特定の変数 (グローバルな const の可能性がある) を初期化するために (前のマクロのように) 使用される引数をプログラムに渡すことです。
例: $ ./myprogram -v
if(optarg('v')) static const verbose = 1;