轉自 : windows
http://blog.csdn.net/ibingow/article/details/7104346 服務器
開發的windows版本服務器Program中,不免發生Crash,而windows的異常提示窗口,讓看門狗進程沒法做用,所以須要關閉windows的提示。 app
key code : spa
#define CRASH_SILENTLY 1
#if defined(_MSC_VER) && CRASH_SILENTLY
#include <excpt.h>
#define Q_TRY_BEGIN __try {
#define Q_TRY_END }
//EXCEPTION_EXECUTE_HANDLER
#define Q_EXCEPT __except(EXCEPTION_EXECUTE_HANDLER) { \
printf("Shit happens!\n");fflush(NULL); \
return 1;}
#else
#define Q_TRY_BEGIN
#define Q_TRY_END
#define Q_EXCEPT
#endif
int main(int, char**)
{
Q_TRY_BEGIN
int *a = 0;
*a = 0;
Q_TRY_END
Q_EXCEPT
printf("Exiting 0...\n");
fflush(NULL);
return 0;
}
若是把CRASH_SILENTLY定義爲0,那麼在程序崩潰就會彈出對話框,設爲一就只打印Shit happens!而後就返回。 .net
vs2008 去掉編譯選項 去掉/EHsc的方法是 : Properties->C/C++->Code Generation->Enable C++ Exceptions 關閉便可。 code