程序周期及预处理

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

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

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

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

预处理命令

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

一、宏定义

用字符文本替换宏名

1、不带参的宏

#define 宏名 字符文本

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

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

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

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

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

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

2、带参的宏

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

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

(2)先进行参数替换

(3)#参数,把参数用“”括起来整体

(4)##连接

#define SET(arg) A##arg=arg;
SET(1);   //宏替换为A1=1

 

 

 

二、文件包含

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

转载于:https://www.cnblogs.com/noengi/p/4186089.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值