【C陷阱与缺陷】
小田
无人扶我青云志,我自踏雪向山巅。倘若命中无此运,孤身亦可登昆仑。他朝若有翻身时,生吃黄莲也叫甜。
展开
-
【C陷阱和缺陷】词法缺陷和语法缺陷
第一章:词法陷阱 1)词法分析器:编译器中负责将程序分解成一个一个符号的部分 2)= 不同于 == 在循环语句中如果出现 = 会发出警告(waring)。 例:先将y赋值给x,然后判断是否为0。为了避免警告可以将 if(x=y) fun(); 改成 if( (x=y) !=0) fun(); 3)&和|原创 2012-11-11 00:37:16 · 1823 阅读 · 0 评论 -
【C陷阱和缺陷】预处理器
一,概念 宏只是对程序的文本起作用,提供了一种对组成程序的字符进行变换的方式,而并不作用域程序中的对象,因此可以使一段看上去完全不合法的代码变成一个有效的程序,也能使一段看上去无害的代码编程一个怪物。二,细节 1)宏定义中的空格 (注意带参数的宏) 如果函数无参,则调用时只需在函数名后面加一对括号,如果一个宏不带参数原创 2012-11-28 22:27:21 · 1591 阅读 · 0 评论 -
【C陷阱和缺陷】可移植性缺陷
一,应对C语言标准变更 编译器并不是都实现了C标准(ANSI),不同的C语言实现会有细微的差别。 使用最新的C特性会更容易编写而且不容易出错,但可能造成在某些早期的编译器上无法工作,失去部分客户。为了提高可移植性,要在新旧用法之间进行取舍。二,标示符名称的改变 某些C语言的实现把一个标识符中处出现的所有字符作为有效字符处理,而有的C实现会自动原创 2012-11-28 23:02:25 · 1732 阅读 · 0 评论 -
【C陷阱和缺陷】语义缺陷
一,指针和数组 1) C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来 2) 对于一个数组,我们只能够做两件事:确定该数组的大小,以及获得指向该数组下标为0的元素的指针.例子1: int a[3]; sizeof(a) = 12 结果是整个数组a的大小,而不是指向数据a的元素的原创 2012-11-16 00:09:04 · 1637 阅读 · 0 评论 -
【C陷阱和缺陷】连接
一,概念 连接器的作用在于把有编译器或汇编器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的实体,该实体能够被操作系统直接执行。其中,某些模块式直接作为输入提供给连接器的;而另外一些目标木块则是根据连接过程的需要,从包括有类型printf函数的库文件中取得的。 二,连接过程问题的根源 C程序 - > 预处理成demo.i -原创 2012-11-18 00:56:52 · 1442 阅读 · 0 评论 -
【C陷阱和缺陷】库函数
一,返回整数的getchar函数 我们来看下面的程序:#include "stdio.h"void main(){ char c; while ( (c = getchar()) != EOF ) { putchar( c ); }} 看起来这段程序应该把它的标准输入拷贝到输出,实际运行情况并非原创 2012-11-22 22:58:35 · 1329 阅读 · 0 评论