我想創建一個Assert函數,在不打開控制檯的情況下在新窗口中顯示消息。該函數需要獨立於O.S,如果可能的話不使用C++外部庫。MessageBox操作系統。獨立
#include <string>
#include <sstream>
#ifdef WIN32
#include <windows.h> // include windows header, for Windows Based Sistems.
#else
// ...
#endif
void Assert (bool cond,const char* file,int line,const char* desc)
{
if (cond) return; // No Assertion.
#ifdef WIN32
// Use MessageBox function to display the information.
// For Example ...
std::stringstream st;
st << "There Was An Error At Runtime ! \n";
st << "File: " << file << "\n";
st << "Line: " << line << "\n";
st << "Description: " << desc << "\n";
st << "Do You Want To Continue Running the Application?\n";
if (MessageBox (NULL,"Unexpected Error", str.str().c_str(), MB_YESNO) == IDNO)
exit (-1);
#else
// Do Something, but in Unix Base Systems.
#endif
}
#define assert(condition,description) \
__assert__ (condition,__FILE__,__LINE__,description)
極品C++代碼以輸出在其他O.S
定義其他操作系統 - 有這麼多 – Zaffy
linux,macintosh –
爲什麼不在#ifdef WIN32的#else之後編寫代碼?其餘的會變得更簡單,我們不必猜測。 –