ASSERT()和assert() | const,static和volatile要注意的几个问题 |define宏与const区别
来源:互联网 发布:react java 编辑:程序博客网 时间:2024/05/23 09:33
1 ASSERT()是干什么用的
ASSERT ()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序:
......
ASSERT( n != 0);
k = 10/ n;
......
ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
assert()的功能类似,它是ANSI C标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。
1 ASSERT()是干什么用的
ASSERT ()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序:
......
ASSERT( n != 0);
k = 10/ n;
......
ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
assert()的功能类似,它是ANSI C标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。
2 const,static和volatile要注意的几个问题
char *const cp; //到char的const指针
char const *pc1; //到const char的指针
const char *pc2; //到const char的指针(后两个声明是等同的)
特殊用法:const修饰成员函数
const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数;
const对象的成员是不能修改的,而通过指针维护的对象确实可以修改的;
const成员函数不可以修改对象的数据,不管对象是否具有const性质。编译时以是否修改成员数据为依据进行检查。
static特殊用法:静态成员和静态成员函数
如果一个变量是类的一部分,但却不是该类的各个对象的一部分,它就被成为是一个static静态成员。一个static成员只有唯一的一份副本,而不像常 规的非static成员那样在每个对象里各有一份副本。同理,一个需要访问类成员,而不需要针对特定对象去调用的函数,也被称为一个static成员函 数。类的静态成员函数只能访问类的静态成员(变量或函数)。
volatile类型修正符(type-modifier):限定一个对象可被外部进程(操作系统、硬件或并发进程等)改变。volatile与变量连用,可以让变量被不同的线程访问和修改。声明时语法:
int volatile vInt;
常用于像中断处理程序之类的异步进程进行内存单元访问。
3define宏与const区别(原创)
- ASSERT()和assert() | const,static和volatile要注意的几个问题 |define宏与const区别
- ASSERT()和assert() | const,static和volatile要注意的几个问题 |define宏与const区别
- 认识const 和assert
- C语言关键字:static,const,inline,volatile与assert()等
- const和define区别 static
- static、const、extern和define的区别
- #define,const,typedef三者联系与区别 及 static和const的解释
- const 与assert的学习
- const ,static 和 volatile
- static、const和static const的区别
- const和define的区别
- #define和const的区别
- #define和const的区别
- const和define的区别
- const 和define的区别
- const 和define的区别
- const 和 define 的区别
- const和#define的区别
- Oracle数据库系统性能优化策略
- SQL查询语句精华使用简要
- 面试常见37个问题
- 2007/02/28 星期三 晴
- Gentoo使用指南(ChinaUnix)
- ASSERT()和assert() | const,static和volatile要注意的几个问题 |define宏与const区别
- RegisterClientScriptBlock和RegisterStartupScript
- Windows下Oracle9i数据库文件的自动备份
- 揭开次世代处理器革新风暴前奏——Cell处理器
- 利用DataSet的Fill方法实现DataList的分页技术(vb.net)
- 关于javabean属性使用annotation约束的测试
- 更深层次分析一道试题——指针内存分配
- Javascript小技巧
- ASP.NET2.0+SQL Server2005构建多层应用