C++ C+的智能断言+;应用

C++ C+的智能断言+;应用,c++,visual-c++,messagebox,assertions,C++,Visual C++,Messagebox,Assertions,定义一个新的宏来满足我向用户显示失败的断言的需要,并为开发人员调试问题提供足够的信息,这样做是否好 给用户的消息,是什么 用户应该在开发人员的最后信息中处理此消息 我们使用的示例消息fn MessageBox(_T("Error in finding file."),_T("TITLE"),MB_ICONERROR); 从最终用户的立场来看,我有两件事要考虑。 目标受众是谁?如果您的祖母正在使用此程序,这些断言消息框除了让她感到沮丧之外,还能完成什么 这些断言失败的频率有多高?正常使用一周内

定义一个新的宏来满足我向用户显示失败的断言的需要,并为开发人员调试问题提供足够的信息,这样做是否好

给用户的消息,是什么 用户应该在开发人员的最后信息中处理此消息

我们使用的示例消息fn

MessageBox(_T("Error in finding file."),_T("TITLE"),MB_ICONERROR);

从最终用户的立场来看,我有两件事要考虑。

  • 目标受众是谁?如果您的祖母正在使用此程序,这些断言消息框除了让她感到沮丧之外,还能完成什么
  • 这些断言失败的频率有多高?正常使用一周内的一次断言肯定会证明将其保留在程序中是合理的,但一小时几次只会激怒用户。中间立场显然很难衡量
  • 您是否考虑过在程序中加入“启用断言”首选项?这样,如果有一些更具技术头脑(并且更乐于助人)的用户,他们可以显式启用断言,并在出现问题时通知您;如果一些用户不知道断言是什么,也不知道为什么他们会在你的程序中出现弹出窗口,他们可以禁用断言,继续愉快地使用你的程序。希望您可以在弹出窗口中添加“不再显示断言失败消息”复选框

我认为,强制用户使用断言弹出窗口显然是一个坏主意,但允许用户启用或禁用警告将是一个好方法。

消息框不能为开发人员显示任何信息。开发人员的信息必须保存在一些日志文件中,用户要求将文件传输给开发人员


PS:您的问题非常简短。

除非用户都是程序员,否则不要向他们公开任何内部内容,而是使用日志文件和带有发送建议的弹出窗口(自动)在问了这个问题之后,我读到了Andrei Alexandrescu和John Torjo在年提到的
SMART\u ASSERT
。这似乎是我的合适人选,但那篇文章中指向源代码的链接断了,有人能给我SMART_ASSERT的源代码吗?

我不会让用户看到任何真正的调试信息,因为这只会让你的应用程序看起来很成熟


其次,为什么要使用do while循环而不是常规的{}作用域

SMART_断言确实非常有用。它不仅显示assert失败的文件和行,还显示相关变量的内容,并提供在会话结束前忽略assert的功能。源代码在这里可用:是的,它是必需的,因为它使开发人员在ASSERT语句后添加分号。我建议不要使用Afx或MFC。您可以使用Win32和Intrinsic完成所有这些工作。
MessageBox(_T("Error in finding file."),_T("TITLE"),MB_ICONERROR);