0

Global.h

#ifndef GLOBAL_H
#   define GLOBAL_H

#define DEBUG

#ifdef DEBUG
#   define IF_DEBUG( ... )   __VA_ARGS__
#else
#   define IF_DEBUG( ... )
#endif /* DEBUG */

#endif /* GLOBAL_H */

メイン.cpp

#include <string>
#include <iostream>
#include "Global.h"

int main() {
    int A = 1;
    int B = 2;
    int C = 0;

    IF_DEBUG(
        std::cout << "\nStep 1> Calculating...\n";
    )

    C = A + B;

    // DO WHATEVER

    IF_DEBUG(
        std::cout << "\nStep n> ...\n";
    )

    // ...

    std::cout << C << std::endl;

    // Note: I could also do some operations within the IF_DEBUG macro.
    IF_DEBUG(
        int X = 10;
        int Y = 5;
        int Z = X / Y;
        std::cout << Z << std::endl;
    )

    IF_DEBUG(
        std::cout << "\nDebugged! This program has been paused. Enter any key to continue!\n";
        ::getchar();
    )
    return 0;
}

グローバル ヘッダー ファイル (Global.h) で定義IF_DEBUGした方法と、それをデバッグ目的でメイン ソース ファイル (Main.cpp) で常に使用している方法がわかりますか? それをしても大丈夫で安全ですか?

やっていいのか分からないので質問させていただきます。これを友達に見せたら、それをするのは「悪い」と言われました。したがって、私は確信が持てません。

4

1 に答える 1

3

これは非常に一般的で便利なトリックです。#define DEBUGただし、ソース コードにを含めない方がよいでしょう。代わりに、コンパイル コマンド ラインで定義できます。が定義さg++ -DDEBUG -c file.cppれているかのようにコードをコンパイルします。DEBUG

を使用している場合は、 (C Preprocessor Flags) 変数Makefileに追加できます: .CPPFLAGSCPPFLAGS=-DDEBUG

IDE を使用している場合は、プロジェクト設定で C プリプロセッサ フラグを見つけてみてください。

于 2013-03-29T00:53:45.327 に答える