18、C语言中预处理及位段
来源:互联网 发布:mac在美国多少钱一支 编辑:程序博客网 时间:2024/04/30 13:58
预处理
预处理指令并不是真正的C语言,只是嵌入到C语言中的一种处理方式,所以也无须加
分号;
总共有三种类型的预处理指令:宏定义、文件包含、条件编译
一、宏定义
1、不带参数的宏定义
#define 标识符 字符串
如:#define PI 3.1415926
2、带参数的宏定义
#define 标识符(参数表) 字符串
如:#define s(a,b) a*b
二、文件包含
将一个源文件的内容完全复制(包含)进来,并插入到当前位置。
#include < >标准形式,只到库函数文件所在的目录中寻找
#include “”先在用户当前目录查找,再按标准形式查找
三、条件编译
当条件满足时编译,不满足时,则编译另一组语句
三种方式
1、
#ifdef 标识符 //如果宏定义了
程序段1;
#else
程序段2
#endif
2、
#ifndef 标识符 //如果没有宏定义
#else
#endif
3、
#if 表达式 //如果表达式为1
#else
#endif
二、位运算以及位段
1、运算符
&按位与 ~按位取反
| 按位或 ^ 按位异或
<< 左移 >> 右移
只有~是单目运算符。
有&= |= >>= <<= ^=
注意:参加位运算的对象只能是整型或字符型的数据 。
2、位段
C语言中允许在一个结构体中以位单位来指定其成员所占内存位数
这样的成员称为位段
如:
struct packed_data
{
unsigned a:2;
unsigned b:4;
unsigned :0;//表示本存储单元不再存储数据
unsigned :2;//表示这两位不可用
};
声明方法:
类型 [成员名] :位宽;
注意:如果本存储单元的余下的位数小于所申请的位宽,那么
直接转到下一个存储单元中存储。
一个位段位数不可以大于一个存储单元的总位数。
位段组至少占用一个存储单元,多余舍弃不用。
一个位段不可以跨多个存储单元
可定义无名位段,表示不可用
位段中的位数,可以按整型数处理
- 18、C语言中预处理及位段
- 位段【C语言】
- 位段 C语言
- C语言位段
- C 语言 位段
- C语言位段
- c语言位段
- C语言基础之编译预处理及位运算
- 浅析C语言结构体及位段
- 解析C语言结构体及位段
- C 语言--位段摘要
- 浅谈C语言位段
- C语言位段理解
- C语言 位段详解
- C语言的位段
- C语言位段问题
- C语言中的位段
- C语言中关于位段的简单理解
- 15、C语言用户自定义数据类型
- 16、C语言指针小结
- cocos2d-x中实现区域裁剪
- 17、C语言文件及文件操作
- 隐藏UIScrollView的滚动条
- 18、C语言中预处理及位段
- 求数组中的最长平台
- 19、C语言小结
- Java测试框架比较:TestNG VS JUnit 4
- 20、C语言防止重复编译
- alsa声卡驱动分析总结
- cocos2d-x游戏开发中CREATE_FUNC和NODE_FUNC概述
- 在HTML中嵌入JavaScript脚本
- 安卓开发中Android消息机制详解