当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 assert用法及代码示例


C语言assert头文件(assert.h)中assert宏的用法及代码示例。

用法:

void assert (int expression);
评估断言
如果论点表达式函数形式的此宏的等于零(即表达式为),则会将一条消息写入标准错误设备,然后abort被调用,终止程序执行。

显示的消息的详细信息取决于特定的库实现,但至少应包括: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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。