C语言assert头文件(assert.h)中assert宏的用法及代码示例。
用法:
void assert (int expression);
评估断言
显示的消息的详细信息取决于特定的库实现,但至少应包括:expression其断言失败,源文件的名称及其发生的行号。常用的表达式格式为:
Assertion failed: expression, file filename, line line number
如果在包含<assert.h>,名称为的宏NDEBUG已经定义。这允许编码器包含尽可能多的assert在调试程序时根据需要在源代码中进行调用,然后通过简单地添加如下行来将其全部禁用以用于生产版本:
/* assert example */
#include <stdio.h> /* printf */
#include <assert.h> /* assert */
void print_number(int* myInt) {
assert (myInt!=NULL);
printf ("%d\n",*myInt);
}
int main ()
{
int a=10;
int * b = NULL;
int * c = NULL;
b=&a;
print_number (b);
print_number (c);
return 0;
}
在代码的开头,在包含之前<assert.h>。
因此,此宏旨在捕获编程错误,而不是用户或运行时错误,因为通常在程序退出调试阶段后将其禁用。
参数
- expression
- 要评估的表达式。如果此表达式的计算结果为
0
,这会导致断言失败终止程序。
返回值
空示例
/* assert example */
#include <stdio.h> /* printf */
#include <assert.h> /* assert */
void print_number(int* myInt) {
assert (myInt!=NULL);
printf ("%d\n",*myInt);
}
int main ()
{
int a=10;
int * b = NULL;
int * c = NULL;
b=&a;
print_number (b);
print_number (c);
return 0;
}
在这个例子中assert用于中止程序执行,如果print_number以空指针作为属性调用。在第二次调用该函数时会发生这种情况,这会触发断言失败以发出错误消息。
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C assert function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。