c语言预处理宏定义

来源:互联网 发布:java iterator原理 编辑:程序博客网 时间:2024/05/22 15:48

预处理

1.

预处理概述
预处理也称预编译,是整个编译过程的最先做的工作,它是指在编译源文 件前对预处理部分进行的编译处理。当对一个源文件进行编译时, 系统将自 动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源 程序的编译。
C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理 地使用预处理功能编写的程序便于阅读、修改、 移植和调试,也有利于模块 化程序设计。预处理命令以符号“#”开头。

C语言的预处理主要有三个方面:     

(1) 文件包含 #include

 (2) 宏定义 #define

 (3)条件编译 #if ... #endif

2.
头文件包含
头文件包含是指在一个文件中包含另一个头文件(.h)的内容,在编译处 理时将另一个头文件的内容复制到#include命令所在的位置。
一般格式:
#include “” 或
#include <>
如: #include <stdio.h> #include <string.h>等
两种格式的区别在于:
(1) 使用双引用: #include “Person.h” 编译器在源文件所在目录搜索头文
件,一般为自定义头文件,如果没找到,再到系统指定的目录中去查找。
(2) 使用尖括号:#include <stdio.h> 编译器在预设目录里搜索头文件,
一般为库文件所在目录,系统头文件。
3.
宏定义
  宏定义也称宏替换,宏定义主要有两种形式,一种是简单的不带参数的宏,另一种
是带参数的宏。
不带参数的宏一般格式: #define
如#define PI 3.14159 使用时直接使用PI即可。
注:(1) 标识符一般大写。
(2) 宏定义末尾不加分号。
(3) 宏定义不分配内存,变量定义分配内存。
(4) 预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不
做语法检查。
带参数的宏一般格式:#define 宏名(参数列表)字符串
如#define sub(a,b) ((a)-(b)) 即使用宏sub(a,b)来表示两个数相减。
使用时直接用sub(a,b)来代替a-b:printf(“%d\n”,sub(3,5));
4.
条件包含

#if#elif#else#endif 这几个指令称为条件编译指令,可对程序源 代码的各部分有选择地进行编译。 


#include<stdio.h>:系统头文件
#include”stdio.h”:自定义头文件
#define PI 3.14159
宏定义不分配内存
宏定义末尾不加分号
#define PI 3-5:预处理编译器给pi赋值是3-5而不是-2;


#ifndef#define#endif:防止头文件重复包含



原创粉丝点击