处理过程:预处理、编译、连接
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
时间: 2024-11-09 04:48:31