本专栏总结王利涛《C语言嵌入式Linux高级编程》第三期课程
一、预处理主要干了啥?
1)预处理过程
- 头文件展开:将 #include包含的文件插入到该指令位置;
- 宏展开:展开所有的宏定义,并删除#define;
- 条件编译:处理所有的条件编译指令,#if、#ifdef、#else
- 删除注释
- 添加行号和文件名标识:编译调试时显示行号信息;
- 保留#pragma命令。
2)主要工作
- 宏展开;
- 文本替换。
二、为什么需要预处理
- 宏定义:编程方便;
- 条件编译:兼容各个平台,最大程度复用公用代码;
- 头文件的包含:模块化编程。
三、#pragma预处理命令
1)用途
- 设定编译器状态;
- 指示编译器完成一些特定的动作。
2)使用格式
- #pragma pack( n ):指示结构体和联合成员的对齐方式;
- #pragma message(“string”): 编译信息输出窗口打印文本信息;
- #pragma warning:有选择地改变编译器的警告信息行为;
- #pragma once: 在头文件里加入这条指令,防止头文件多次编译。