1.C/C++编译预处理
预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。
预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
C语言提供多种预处理功能,主要处理#开始的预编译指令,如宏定义(#define)、文件包含(#include)、条件编译(#ifdef)等。合理使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。
2.宏定义
宏定义有两种:
(1)无参宏定义
格式为:
#define 标识符 字符串
举例:
#define MAX_TIME 1000
(2)带参宏定义
格式为:
#define 宏名(形参表) 字符串
举例:
#define INC(x) x+1 //宏定义
y = INC(5); //宏调用
3.文件包含
文件包含有有两种书写形式:
#include <header.h>
#include "header.h"
如果头文件名在尖括号(<>)里,那么认为该头文件是标准头文件。编译器将会在预定义的位置集查找该头文件,这些预定义的位置可以通过设置查找路径环境变量或者通过命令行选项来修改。如果头文件名在一对引号里,那么认为它是非系统头文件,非系统的头文件的查找通常开始于源文件所在的路径。
另外,头文件的包含存在重复包含的文件,那么我们常常在头文件中加入条件编译的指令来避免被重复包含。方法类似如下:
#ifndef SALESITEM_H
#defineSALESITEM_H
//Definition of myself code…
#endif
4.条件编译
条件编译有三种形式:
(1)#ifdef形式
#ifdef 标识符 (或#if defined 标识符)
程序段1
#else
程序段2
#endif
(2)#ifndef形式
#ifndef 标识符 (或#if !(defined 标识符))
程序段1
#else
程序段2
#endif
(3)#if形式
#if 常量表达式
程序段1
#else
程序段2
#endif
学习资料参考于:
http://www.cnblogs.com/clover-toeic/p/3851102.html