首页 > 代码库 > 程序周期及预处理

程序周期及预处理

处理过程:预处理、编译、连接

1、预处理:不是C++语句,不加;,必须以#开头

2、编译:先分析后综合,存储分配,目标代码生成

3、连接:不同文件之间重定位处理

预处理命令

{宏定义,文件包含,条件编译}

一、宏定义

用字符文本替换宏名

1、不带参的宏

#define 宏名 字符文本

(1)宏名按标识符取名,一般全大写,字符文本可以是任何(包括关键字

(2)字符串常量,标识符的一部分不会替换(只是整体的一部分)

(3)同一宏不要定义多次,先取消,再定义,#undef

(4)宏的作用范围:从#define开始,到#undef结束(缺省则到源程序末尾)

(5)通常将宏定义在开头或头文件

(6)宏定义允许嵌套,即在字符文本中可以引用已定义的宏名

2、带参的宏

#define 宏名(参数表) 字符文本

(1)宏名与括号之间无空格,否则理解为不带参

(2)先进行参数替换

二、文件包含

1、<>仅在系统路径查找,调用标准库

2、“”先在项目中查找,再在系统查找,调用自己编写的头文件

3、头文件通常包含:函数申明、全局常量、全局变量、类型申明、宏定义

三、条件编译

1、#define定义条件

2、#ifdef,#ifndef

 

#define    //先定义,不管有没有值
#ifdef 条件字段...
//程序代码一#else... //程序代码二#endif

//ifndef与ifdef相反

 

3、#if

#if  常量表达式  //仅能使用define过的表达式...   //代码段1#elif...  //代码段2#else...  //代码段3#endif

4、# ifdef=# if defined  ;  #ifndef=#if !defined  ;  

四、其他命令

1、#error:显示信息并且停止编译

2、#pragma once:编译时仅包含(打开)一次

3、#line

程序周期及预处理