<VCC笔记> 关于Assertion】的更多相关文章

这篇博客开始介绍VCC的用法,先用简单的例子介绍VCC的基本语法,当然面对更复杂的程序时,VCC也是将他简化然后分析的. 1.Assertion #include <vcc.h> int main() { int x,y,z; if (x <= y) z = x; else z = y; _(assert z <= x) return ; } 上面的代码使z成为x和y之中的最小值.其中被_(  )包围的注释就是VCC所需要的注释,而且C语言编译器会无视这些注释.因为include的…
在程序运算或者数据转换的时候,由于各种数据类型有各自的范围,运算的时候,其结果如果超出这个范围,就被称之为溢出.熟悉C#的同志们应该了解用来解决溢出(Overflow)问题的checked,unchecked这两个关键字.而VCC也有类似的设定. 溢出是有规律的,有时候代码原本的设计就是要利用溢出这一特性.但是VCC(以及C#)不愿意默认程序在利用溢出,所以发生溢出的时候会报错.因此有unchecked. #include <vcc.h> unsigned hash(unsigned char…
接下来是第二种注释语句类型Assumption.语法_(Assume E), 这个表达式是让VCC在接下来的额推理中,无视表达式E, 直接认可表达式E. 例: int x, y; _(assume x != 0) y = 100 / x; 在没有那条assumption之前,VCC肯定不会通过验证,因为x可能为0.但是,加了Assumption之后,VCC就选择放弃治疗,将x!=0加入自己的资料库.但是你用assumption糊弄了VCC并没有什么好处,因为当代码实际运行的时候,没有人会管那堆注…
推断操作符 在VCC中,==>符号意味着逻辑推理结果,即离散数学中的蕴涵关系.P==>Q等价于((!P)||(Q)).是非常常用的操作符. 量词(quantifier) 关于量词,这里指的是全称量词(universal quantifier)和存在量词(existential quantifier). 在VCC中全称量词的描述方法是 \forall  T v;E ,意思是“对于任意的T类型的v,表达式E均为真. 例如: _(assert x > 1 && \forall…
最近在学校跟着老师参与了一个代码验证的工作,需要使用Microsoft Research(微软学术)开发的VCC工具,是开源的,托管在Codeplex上.这东西英语资料极其少,中文资料基本没有.我只能看官方给的英文文档.因此,我也就有了心思写几篇简单的博客,也包括文档的一些翻译.留个纪念也好. VCC主页(https://vcc.codeplex.com/) 翻译了一下VCC教程上的简介: “VCC是一个验证环境,用与验证c语言编写的程序.VCC获取一个程序(注释了功能, 断言和类型不变量)并试…
1 定义一个函数 void _invalid_parameter( const wchar_t * expression, const wchar_t * function, const wchar_t * file, int line, uintptr_t pReserved ); 2 注册这个函数 _invalid_parameter_handler _set_invalid_parameter_handler(_invalid_parameter_handler pNew); 3 在程序开…
PHPUnit是一个面向PHP程序员的测试框架,这是一个xUnit的体系结构的单元测试框架. 复杂的项目,通过单元测试能够快速排查bug,有效减少bug的产生.简单的项目,使用php自带的var_dump().print_r()也能很方便的调试bug. PHPUnit通过运行测试用例里的断言(例如判断返回结果不为空),检查代码是否符合预期. 安装 安装方式有两种.一种是使用phar包,一种是使用Composer. 1.使用phar包 最新版的稳定版phar包是5.7,下载地址https://ph…
一◐ java概述                                                                                        1.1 Java的不同版本:J2SE.J2EE.J2ME的区别                                                  1998年12月,SUN公司发布了Java 1.2,开始使用“Java 2” 这一名称,目前我们已经很少使用1.2之前的版本,所以通常所说的Ja…
Introducing Regular Expressions 读书笔记 工具: regexbuddy:http://download.csdn.net/tag/regexbuddy%E7%A0%B4%E8%A7%A3 在线测试平台: http://www.regexpal.com/ http://gskinner.com/RegExr/ 进阶读物: Mastering Regular Expressions Regular Expressions Cookbook 资料: Notepad++…
耗时一上午时间对HOT大叔昨晚的群课内容进行温故并整理,现将其上传,若想看直播可到下面链接处下载:http://bbs.21ic.com/icview-229746-1-1.html        成功的路子基本相似,失败的经历各不相同,望楼下不要盲目顶贴,有失败经验的在这里以如下格式记录:①软件环境 ②硬件环境 ③现象描述 ④解决方法 ⑤一点建议 从而使得刚刚开始入门的人少走弯路,谢谢! 整理内容摘录:   整理笔记PDF版下载处: 菜农群课笔记之ICP与ISP----20110412.pdf…