![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C陷阱与缺陷
wwwdongzi
这个作者很懒,什么都没留下…
展开
-
第六章 预处理器
宏就是文字展开,实际中可以展开写出来发现错误。6.1 不能忽视宏定义中的空格6.2 宏并不是函数 宏定义一个函数时,1、要把每个参数用括号括起来2、同时也要把整个表达式括起来。3、要确保宏中的参数没有副作用 #define max(a,b) ((a)>(b)?(a):(b)) max(big,x[i++]),这时++有可能被计算两次原创 2014-08-09 14:20:09 · 624 阅读 · 0 评论 -
第二章 语法陷阱
变量fp是一个函数指针,*fp就是该指针指向的函数,所以 (*fp)()就是调用该函数的方式,ANSI C标准允许程序员将上式简写为fp()。在表达式(*fp)()中,*fp两侧的括号很重要,因为函数运算符()的优先级高于单目运算法*。原创 2014-08-09 14:18:03 · 626 阅读 · 0 评论 -
第一章 词法陷阱
1.3 词法分析中的‘贪心法’ 每个符号应该包含尽可能多的字符。需注意的是符号中间不能有空格。a---b等同于表达式a -- - b但是不同于a - -- by/*p; /*被解释为一段注释的开始正确有意义的写法应该是y=x/ *p或者y=x/(*p);1.5 字符与字符串用单引号引起的一个字符实际上代表一个整数。用双引号引起的字符串,代表的却原创 2014-08-09 14:16:30 · 623 阅读 · 0 评论 -
第四章 连接
4.2声明与定义extern int a;这是一个显示声明,说明了a的存储空间在程序的其他地方分配的。严格来说,每一个外部变量只能定义一次。如果外部变量的多个 定义各指定有一个初始值,例如://l1.cint a=1;//l2.cint a=2;这样会出错。但是如果变量没有指定初始值的话,一些系统会接受这样的程序。4.原创 2014-08-09 14:19:32 · 585 阅读 · 0 评论