我想创建一个Assert函数,在不打开控制台的情况下在新窗口中显示消息。该函数需要独立于操作系统,并且尽可能不使用c++外部库。
#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++代码在其他操作系统中输出MessageBox
c++标准不包括GUI操作。您将需要使用为您想要的平台提供GUI服务的外部库。
所以你所要求的是不可能的。对不起。