C++调试宏与断言
2026/6/13 22:43:52 网站建设 项目流程

1. 调试宏

  • __FUNCTION__:函数名
  • __TIME__:文件运行的时间(注意:是文件运行时间,而不是运行该行的时间)
  • __LINE__:所在行数
  • __FILE__:文件的名字
  • __DATA__:日期

注意:

这几个宏是编译器内置的,不是在哪个头文件中包含的。

2. assert

#include<assert>voidassert(intexpression);

assert 作用:

  • assert的作用是现计算表达式expression,如果其值为假(即为 0),那么它先向stderr打印一条出错信息,然后通过调用abort来终止程序运行。
  • 使用assert的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。
  • 在调试结束后,可以通过在包含#include的语句之前插入#define NDEBUG来禁用assert调用。

assert失败时如何打印附加信息?

通常,如果assert失败,人们希望打印出额外的信息。这样做的一种方法是:

assert(vec.size()>i||!(std::cerr<<"False: "<<vec.size()<<">"<<i))

这样,当assert出现故障时,会打印出实际大小。但是很容易忘记!,它将使断言条件为真,程序将继续运行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询