assert.h | C 标准库浅探

介绍

assert.h 定义了一个可用作标准调试工具的宏函数:assert 宏函数。这个宏函数是C语言的调试的一个很重要的工具。

assert

函数原型

void assert (int expression);

描述

此函数用于评估断言。

简单来说就是,此宏函数接收一个表达式,如果对表达式进行求值得到的结果为 0,则立即中断程序返回错误信息,否则程序则继续正常运行。

详细过程是,此宏函数会判断其 expression 参数是否为 0。如果是,则触发(位于 stdlib.h 的) abort 函数,并在标准输出报告错误信息。报错信息的内容取决于具体的库,但大多数的格式都是这样的:Assertion failed: 表达式, file 文件名, line 行号

提示:如果要发行程序,可以在包含 assert.h 前添加 #define NDEBUG 以禁用 assert 宏函数。

示例

这个案例实现了一个 print_number 函数,此函数输出指针指向的数字,并可以使用断言以防指针为空指针。

/*此案例修改自 http://www.cplusplus.com/reference/cassert/assert/*/
#include <assert.h>
#include <stdio.h> // printf

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值