注册 登录
编程论坛 C++教室

关于assert

反脑控2016 发布于 2016-09-12 14:19, 2079 次点击
目前我没有能力阅读此函数源代码,从网上的贴子得知其函数原型为:
void assert(int expression);
该函数的作用是:计算表达式expression的值,如果值不为0,什么也不做;如果值为0,先向stderr打印一条出错信息,然后通过调用abort来终止程序运行,并显示一个对话框,其标题为“Microsoft Visual C++ Debug Library”。
我想问的是:其标题为“Microsoft Visual C++ Debug Library”的对话框,它的调用语句在什么位置,是在abort函数内,还是在abort函数外但在assert函数内。
4 回复
#2
rjsp2016-09-12 14:35
百度上就是胡说八道的多
你可以看看这个引用:http://en.
或者看看C标准怎么说
只有本站会员才能查看附件,请 登录

#3
反脑控20162016-09-12 19:17
通过阅读得知:
cassert文件中有:
#ifdef NDEBUG
#define assert(condition) ((void)0)
#else
 #define assert(condition) /*implementation defined*/
#endif
所以下面的程序:
#include
// uncomment to disable assert()
#define NDEBUG
#include <cassert>
int main()
{
    assert(2+2==4);
    std::cout << "Execution continues past the first assert\n";
    assert(2+2==5);
    std::cout << "Execution continues past the second assert\n";
}
等价于:
#include
// uncomment to disable assert()
#define NDEBUG
#include <cassert>
int main()
{
    ((void)0);//等价于;
    std::cout << "Execution continues past the first assert\n";
    ((void)0);//等价于;
    std::cout << "Execution continues past the second assert\n";
}


[此贴子已经被作者于2016-9-12 19:33编辑过]

#4
反脑控20162016-09-12 19:29
condition是expression of scalar type,即它是一个表达式,表达式的值的数据类型是任何基本数据类型.
assert(condition)是个带参宏
我只能理解这些。


[此贴子已经被作者于2016-9-12 19:31编辑过]

#5
反脑控20162016-09-12 19:31
condition是expression of scalar type,即它是一个表达式,表达式的值的数据类型是任何基本数据类型.
 assert(condition)是个带参宏
 我只能理解这些。
1