C语言预处理指令笔记 by STP
2015-12-01 18:14
357 查看
预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。
C语言提供了多种预处理功能,如宏定义、文件包含、
条件编译等。合理使用预处理功能可令程序便于阅读、修改、 移植和调试,也有利于模块化程序设计。
为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号(;)
预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件。
不带参数格式:
作用:编译时将源程序中的ABC替换成23,常用来定义常量。
带参数格式:
作用:AVG(3,5),(((3)+(5))/2),输出结果为:4;
类似于函数,但不涉及储存空间分配,参数类型匹配,参数传递,返回值等问题,在编译预处理阶段执行,比函数效率更高。
使用习惯注意:宏一般用大写字母,以便与变量名区分开来;
使用带参数的宏注意将参数和计算结果用括号包起来,确保计算结果正确
格式:
使用习惯注意:#if 和 #elif 后面的条件一般为宏而不是判断变量,因为条件编译是在编译之前做的判断,宏定义也是编译之前定义的,而变量是
在运行时才产生的、才有使用的意义;
条件编译结束后一定要加#endif;
#if defined(),#if !defined()判断是否定义过某个宏;
#ifdef 等同于#if defined(), #ifndef等同于#if
!defined() ;
条件编译与宏结合使用可用于iOS版本适配。
格式1:
作用:将一个文件的全部内容copy到另一个文件中
使用#include容易引起重复包含文件,降低编译效率,可结合条件编译#ifndef使用,避免重复包含(一般OC中使用#import解决该问题,这 里稍作了解就可以了)
C语言提供了多种预处理功能,如宏定义、文件包含、
条件编译等。合理使用预处理功能可令程序便于阅读、修改、 移植和调试,也有利于模块化程序设计。
为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号(;)
预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件。
1.宏定义 #define
不带参数格式:#define ABC 23
作用:编译时将源程序中的ABC替换成23,常用来定义常量。
带参数格式:
#define AVG(a,b) (((a)+(b))/2)
作用:AVG(3,5),(((3)+(5))/2),输出结果为:4;
类似于函数,但不涉及储存空间分配,参数类型匹配,参数传递,返回值等问题,在编译预处理阶段执行,比函数效率更高。
使用习惯注意:宏一般用大写字母,以便与变量名区分开来;
使用带参数的宏注意将参数和计算结果用括号包起来,确保计算结果正确
2.条件编译 #if、#elif、#else、#endif
格式:#if 条件1 code1 #elif 条件2 code2 #else 条件3 code3 #endif
使用习惯注意:#if 和 #elif 后面的条件一般为宏而不是判断变量,因为条件编译是在编译之前做的判断,宏定义也是编译之前定义的,而变量是
在运行时才产生的、才有使用的意义;
条件编译结束后一定要加#endif;
#if defined(),#if !defined()判断是否定义过某个宏;
#ifdef 等同于#if defined(), #ifndef等同于#if
!defined() ;
条件编译与宏结合使用可用于iOS版本适配。
3.文件包含 #include
#include <xxx.h>
<div style="color: rgb(51, 51, 51); font-family: 'courier new', courier; font-size: 14px; line-height: 25.2000007629395px; margin: 0px; padding: 0px; background-color: rgb(254, 254, 242);">格式2:</div><div style="color: rgb(51, 51, 51); font-family: 'courier new', courier; font-size: 14px; line-height: 25.2000007629395px; margin: 0px; padding: 0px; background-color: rgb(254, 254, 242);"><pre name="code" class="objc">#include "xxx.h"
作用:将一个文件的全部内容copy到另一个文件中
使用#include容易引起重复包含文件,降低编译效率,可结合条件编译#ifndef使用,避免重复包含(一般OC中使用#import解决该问题,这 里稍作了解就可以了)
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- 批处理中的预处理实现代码
- Lua和C语言的交互详解
- C#.NET学习笔记5 C#中的条件编译
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置