c专家编程-第一章穿越时空的迷雾

1 c编译器预处理功能

字符串替换,包含头文件,通用模块扩展

2 关于编译器的特性

不可移植的代码

未确定的

未定义的

坏的代码

编写可移植的代码:1)最好严格遵循语言标准 ,只使用已经确定的特性2)不突破任何由编译器所实现的限制 3)对于未确定的、未定义的、不产生依赖代码

3 关于通用模块扩展(宏的使用)

一般宏用法,括号会产生错误的表达形式

#define a(x) a_expanded(x)

a(x);

等价于 a_expanded(x)

如果有空格 

#define a (y) a_expanded (y)

a(x);

实际上变为:(y) a_expanded (y)(x)

4 数值类型自动升级

最好使用有符号型数值变量,对于无符号类型很容易带来数值自动升级后的错误运算

或者用强制类型转换。

#define TOTAL_ELEMENTS (sizeof(array)/(sizeof(array[0])))

int d=-1,x;

if(d<TOTAL_ELEMENTS)

   {}

else 

   {}

5 关于#pragma

向编译器提供一些信息,例如包含特定的函数库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值