assert的用处

ASSERT函数是用于调试中,也就是说在你的代码中当是Debug的时候
它完成对参数的判断,如果是TRUE则什么都不做,如果是FALSE则
弹出一个程序中断对话框提示程序出现错误。
在Release版本中它是什么作用都不起。

它主要是监视程序在调试运行的过程中的运行情况,
多多使用它,绝对有好处,没有一点坏处。

例如:

/* ASSERT.C: In this program, the analyze_string function uses
 * the assert function to test several conditions related to
 * string and length. If any of the conditions fails, the program
 * prints a message indicating what caused the failure.
 */

#include <stdio.h>
#include <assert.h>
#include <string.h>

void analyze_string( char *string );   /* Prototype */

void main( void )
{
   char  test1[] = "abc", *test2 = NULL, test3[] = "";

   printf ( "Analyzing string ‘%s‘\n", test1 );
   analyze_string( test1 );
   printf ( "Analyzing string ‘%s‘\n", test2 );
   analyze_string( test2 );
   printf ( "Analyzing string ‘%s‘\n", test3 );
   analyze_string( test3 );
}

/* Tests a string to see if it is NULL, */
/*   empty, or longer than 0 characters */
void analyze_string( char * string )
{
   assert( string != NULL );        /* Cannot be NULL */
   assert( *string != ‘\0‘ );       /* Cannot be empty */
   assert( strlen( string ) > 2 );  /* Length must exceed 2 */
}

Output
Analyzing string ‘abc‘
Analyzing string ‘(null)‘
Assertion failed: string != NULL, file assert.c, line 24

abnormal program termination
时间: 2024-12-14 18:50:07

assert的用处的相关文章

python assert的用处

python assert 句语格式及用法很简单.通常程序在运行完之后抛出异常,使用assert可以在出现有异常的代码处直接终止运行. 而不用等到程序执行完毕之后抛出异常. python assert的作用 python assert如果发生异常就说明表达示为假.可以理解表示式返回 值为假 时就会触发异常. assert语句的语法格式 assert expression [, arguments] assert 表达式 [, 参数] 附加说明:assert也可以用于多个表达式的: assert

断言(assert)和程序的安全保证

断言,用来DEBUG错误的,在DEBUG时发现然后跟踪错误! 通常 写一个程序给别人使用的,这个代码在安全性上的要求是什么呢?直觉上,我们都知道程序不应该崩.但是通常C/C++的程序如果把包含API的头文件暴露出来的话,根本没办法保证这一点.往往,如果一个C/C++的程序以头文件提供给别人使用的话,其安全性保证应该是"正确使用的时候一定不会崩,错误使用的时候尽最大可能的尽早崩".      我刚知道assert的时候把assert的作用和异常搞混淆了,我以为assert和异常用途一样,

CSS之box-sizing的用处简单介绍

前几天才发现有 box-sizing 这么个样式属性,研究了一番感觉很有意思, 通过指定容器的盒子模型类型,达到不同的展示效果 例如:当一个容器宽度定义为 width:100%;  之后,如果再增加 padding 或者 border 则会溢出父容器,是向外扩张的 如果使用该样式,指定为 box-sizing: border-box; 则 padding 和 border 就不会再溢出,而是向内收缩的,这个效果感觉非常实用, 特别是 input 和 textarea 等 现在设置 100% 再直

[XCTF嘉年华体验赛](web)web2 assert函数

0x00 题目分析 浏览一遍页面,在about页面,获得如下信息 访问 .git/ ,页面存在. 使用githack扒下来.得到源码,进行代码审计. 分析得到: 1.flag在flag页面,要看源码才能看到. 2. 参数过滤了 ../ 也就是限定了只能在本目录 3. exists函数 对文件的存在进行判定. 0X01 解题思路 理清思路,要看源码,有哪几种方法. 1.系统命令执行,cat 等函数 2.函数执行,show_source 等 3.将文件打包 ,下载下来. 这里最有可能的就是函数执行了

Selenium2+python自动化56-unittest之断言(assert)

前言 在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert). 用unittest组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断言方法:assertEqual.assertIn.assertTrue 一.简单案例 1.下面写了4个case,其中第四个是执行失败的 # coding:utf-8import unittestclass Test(unittest.TestCase):   

8 -- 深入使用Spring -- 1...2 Bean后处理器的用处

8.1.2 Bean后处理器的用处 Spring提供的两个常用的后处理器: ⊙ BeanNameAutoProxyCreator : 根据Bean实例的name属性,创建Bean实例的代理. ⊙ DefaultAdvisorAutoProxyCreator : 根据提供的Advisor,对容器中的所有Bean实例创建代理. 这两个Bean后处理器都用于根据容器中配置的拦截器,创建代理Bean.

junit4 assert类中的assert方法总结

junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类. 1.assertTrue/False([String message,]boolean condition);判断一个条件是true还是false.感觉这个最好用了,不用记下来那么多的方法名.2.fail([String message,]);失败,可以有消息,也可以没有消息.3.assertEquals([String message,]Object expected,Object actu

js中(function(){})()的写法用处

http://blog.csdn.net/u010958922/article/details/47007589 js中(function(){})()的写法用处 http://www.cnblogs.com/lunawzh/p/5274474.html http://www.jb51.net/article/29590.htm 从源码中可以看出jQuery.extend和jQuery.fn.extend是同一个方法,但是具体的作用 却不一样.因为在调用jQuery.extend 和jQuery

Appium 相关学习(二) testng中的Assert类

测试流程: 1.启动appium server.使用appium命令启动. 2.配置appium client.appium client的参数配置. 3.通过webdriver执行调用. 一.扩展AssertResult类 主要扩展功能,当断言失败时,自动截图保存,此时需要重写AssertResult的onAssertFailure方法,重写代码如下: public class AssertResult extends Assertion{ @Override public void onAs