2012-05-04 12 views
2

デバッグ時にいくつかのログメッセージを表示したいと思います。一つのオプションはJUCEライブラリーではデバッグペインにテキストを出力するきれいな方法はありますか?

#ifdef DEBUG 
    std::cout << "I'm in debug mode!\n"; 
#endif 

非常に醜いを使用することで、juceソリューションはまた、あなたのようなきちんとしたものを行うことができます

DBG("I'm in debug mode!") 

デバッグウィンドウにテキストを出力素敵なマクロがあります望ましいであろう以下は

int x = 4; 
DBG(String("x=") + String(x)) 

私は、同様に、きちんとした方法は、STDに存在するかどうかを知る::たり後押ししたい::

+0

歓迎されていますか? – jalf

+0

xcodeウィンドウの一番下にあるもの:) – learnvst

+0

誰もがxcodeを使用しているわけではありません。 ;) – jalf

答えて

6

理由だけではなく、あなた自身を書きません:名前空間

namespace DBG 
{ 
inline void DBG(const char* x) 
{ 
#ifdef DEBUG 
    std::cout << x; 
#endif 
} 
} 
+0

うわー、あなたは速いよ:) – Tibor

+0

それをネームスペースに入れる方法はありますか? – learnvst

+0

@learnvstはい - 編集された回答を参照してください。 –

2

については

#ifdef DEBUG 
#define DBG(x) std::cout << x; 
#else 
#define DBG(x) 
#endif 

あなたはprintfのような何かをしたい場合、あなたはビットに別のマクロを使用する必要があります:Nothingを使用して

void DebugPrintLn(const char* format, ...); 
inline void Nothing(...) {} 

#ifdef DEBUG 
#define DBG DebugPrintLn 
#else 
#define DBG Nothing // Or __noop on Visual C++ 
#endif 

を移植性がありますが、引き数はまだ計算されています(__noopは、いずれの引数もではないことを保証します計算、VC++固有)。あなたも、ポータブルな方法で任意の引数計算をスキップすることがあります。:あなたは(GCCと最新のVC++で利用できる両方)マクロ変数の引数を使用できるかどうかより良い

:いずれの場合で

#ifdef DEBUG 
#define DBG(...) DebugPrintLn(__VAR_ARGS__) 
#else 
#define DBG(...) ((void)0) 
#endif 

を、あなたはそれを同じように使います

DBG("Lucky day: %s %i", "Friday", 13); 
0

私は自分の移植可能なTRACEマクロも書いています。私はここでそれを共有する:

#ifdef ENABLE_TRACE 
# ifdef _MSC_VER 
# include <windows.h> 
# include <sstream> 
# define TRACE(x)       \ 
    do { std::stringstream s; s << (x);  \ 
      OutputDebugString(s.str().c_str()); \ 
     } while(0) 
# else 
# include <iostream> 
# define TRACE(x) std::clog << (x) 
# endif  // or std::cerr << (x) << std::flush 
#else 
# define TRACE(x) 
#endif 

は例:

#define ENABLE_TRACE //can depend on _DEBUG or NDEBUG macros 
#include "my_above_trace_header.h" 

int main (void) 
{ 
    int  v1 = 123; 
    double v2 = 456.789; 
    TRACE ("main() v1="<< v1 <<" v2="<< v2 <<'\n'); 
} 

どれ改善/提案/貢献はどのデバッグウィンドウ;-)

関連する問題