もちろんargv
、 とargc
はグローバル変数ではありませんmain()
。これは、明らかに の関数スコープのローカル変数であるためです。
int main(int argc, char * argv[]) { /* ... */ }
便利なオプション処理については、 を参照してくださいgetopt.h
。
出力を抑制する 1 つの方法はgrep
、シェルでファイル リダイレクトを使用することです ( time ./prog > /dev/null
) が、それでも実際の出力関数のコストが発生します。
2 つの考えられるアイデアを提案します。
重要な機能を呼び出しで囲みclock()
、測定と報告を自分で行います。
ユーザーが詳細パラメーターを渡して (実行時にコマンドライン オプションを使用するか、コンパイル時に を使用して#define
)、詳細レベルに応じてのみ出力できるようにします。
アイデア (1) では、次のマクロを使用します。
#define CLOCK_TICK(acc, ctr) ctr = std::clock()
#define CLOCK_TOCK(acc, ctr) acc += (std::clock() - ctr)
#define CLOCK_RESET(acc) acc = 0
#define CLOCK_REPORT(acc) 1000. * double(acc) / double(CLOCKS_PER_SEC)
アイデア (2) については、次のようにします。
#ifndef VERBOSE
# define VERBOSE 0
#endif
#if VERBOSE > 0
// print level 1
#if VERBOSE > 1
// print level 2
#endif
#endif
次に、etc. でコンパイルし-DVERBOSE=3
て、特定のレベルでロギングを有効にすることができます。
これが手動すぎる場合は、アプリケーションの適切なロギング フレームワークを調べる必要があります。