C语言如何使用断言IC解密
IC解密何为断言
断言一般是用于检测在某个程序位置程序必须满足某些条件的宏。一般用的多的可以分两种种情况:
- 前置条件:在某个程度点开始的地方
- 后置条件:在某段程序执行结束后,一般用于检测执行结果
断言发生表示程序中存在错误。因此,断言是提高程序可靠性的有效手段。也是开发阶段快速定位问题的一种很好防御式编程方法。
在C语言中,断言是一些条件判断的宏。比如C语言内置断言是用标准的 assert 宏实现的。当宏执行时,assert 的参数必须为真,否则程序中止并打印错误消息。
比如,在IAR中:
#define assert(test) ((test) ? (void) 0 : abort())
也可以编程者自己定义,比如:
#define assert(arg) { if( !(arg) ) { printf("assert in File="__FILE__" Line=%d ",__LINE__); return; } }
IC解密该怎么用
前置条件
比如某一个函数代码:
#define ALLOWED_SIZE (1024)
int func(int size, char *buffer )
{
assert( size <= ALLOWED_SIZE );
assert( format != NULL );
...
}
这个函数里,使用了两次断言判断函数执行的前置条件:
- size必须要不大于ALLOWED_SIZE,func函数才真正执行其任务。因此,如果输入的size超过1024,func不会做任何处理。
- buffer传入的地址必须不是NULL,否则func函数不会执行。
具体断言判断失败了,断言宏干了什么,需要看看这个宏的实现,有可能是直接返回,有可能整个程序直接终止执行。所以看看其实现就知道了。