c++中的预处理

 

预处理包括:宏定义、文件包含、条件编译 

 

宏定义

1. 用无参宏定义一个简单的常量 

#define PI 3.14 把程序中出现的PI全部换成3.14

2.参数替换

#define S(r) ((r)*(r))

注意:

如果是这种情况:#define S(r) r*r    

                /*some code*/   

                map=S(a+b);

这里map的值为  a+b*a+b             //宏定义只是替换,不做表达式求解

3.函数定义

#define MAX(a,b) (a<b)?a:b

注意: ""内的东西不会被宏替换 

#include<iostream>

#define PI 3.14

#define TURE 1

#define FALSE 0

#define MAX(a,b) (a>b)?a:b

#define S(r) r*r

#define NAME "jim"

typedef int age;

int main(){

age jim=10;

age lucy=18;

int max=MAX(jim,lucy);

std::cout<<max*PI<<std::endl;     //PI is 3.14

int s=S(2+2);

std::cout<<s<<std::endl;       //s is 8,2+2*2+2

std::cout<<NAME<<std::endl<<"NAME"<<std::endl;    //NAME is jim ,but "NAME" cannot be replaced

    return TURE;

    

}

#define中,标准只定义了###两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。

#include <stdio.h> 

#define paster(n) printf( "token " #n" = %d\n ", token##n ) 

int main() 

int token9=10; 

paster(9); 

return 0; 

输出为token 9 = 10 

 

条件编译

形式1  

#ifdef   标识符

程序段 I  

#else  

程序段 2  

#endif  

它的作用是当 “ 标识符已经由#define定义过了。则编译“ 程序段 ” 。 否则编译“ 程序段 ” 。其中如果不需要编译“ 程序段 。则上述形式可以变换 为:  

#ifdef 标识符  

程序段 1  

#endif  

形式2  

#ifndef 标识符  

# define 标识符  

程序段 1  

#else  

程序段 2  

#endif  

它的作用是当 “ 标识符 没有由define定义过。 则编译程序段 1。否则编译程序段 2” 。同样当无“ 程序段时。则上述形式变换为:  

# ifndef 标识符  

# define 标识符  

程序段 1  

#endif  

形式3  

#if 表达式  

程序段 1  

#else  

程序段 2  

#endif  它的作用是 当表达式值为真时。编译程序段1。否则则编译程序段2。同样 当无程序段 2时,则上述形式变换为 :  

#if 表达式  

程序段 1  

#endif  

以上三种形式的条件编译预处理结构都可以嵌套使用。 当else后嵌套 # if 时,可以使用预处理命令 # e l i f , 它相当于 # e l s e# i f 。在程序中使用条件编译主要是为了方便程序的调试和移植。

 

文件包含

#include "文件名"  

或  

#include <文件名>

参考资料:

http://baike.baidu.com/view/1441209.htm#7 

http://baike.baidu.com/view/1283800.htm  

http://baike.baidu.com/view/2076445.htm 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值