我寫了一個可移植的TRACE宏。
在MS-Windows上,它基於OutputDebugString
,正如其他答案所示。
在這裏我分享我的工作:
#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');
}
請隨時給任何改進/建議/貢獻;-)
這不是一個好辦法調試你的程序。瞭解如何使用調試器。 –
我在努力。但是我對C++中通過拷貝傳遞的所有引用和值感到困惑,因爲我非常習慣於像Java這樣的更高級的語言。 – Carven