C语言基础学习记录-宏定义和typedef

1.宏定义

宏在C语言中一段带有名称的代码片段(使用#define定义),在预处理阶段会把程序中的宏名替换为对应的代码片段,然后才进入编译阶段由编译器进行编译

#define   宏定义

#undef   取消宏定义

#ifdef   判断宏是否定义

#ifndef   如果没有定义

1.2用#define定义宏的替换规则

1、 宏可以看作为一些命令的集合。它是一种预处理器指令,在预编译阶段将宏名替换为后面的替换体。

2、#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。

3、 #define的替换规则: 在程序中扩展#define 定义符号和宏时,需要涉及几个步骤:
- 在调用宏时,首先对参数进行检查,看看是否包含任何由 #define 定义的符号。如果是,它们首先被替换。
- 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。
- 最后,再次对结果文件进行扫描,看看它是否包含任何由 #define 定义的符号。如果是,就重复上 述处理过程。

注意:

1. 宏参数和 #define 定义中可以出现其他 #define 定义的符号。但是对于宏,不能出现递归。

CIRCUMFERENCE 宏定义中使用了 PI 和 RADIUS 这两个先前定义的宏

你不能在一个宏的定义中直接或间接地引用它自身,因为这会导致无限循 环替换

#define PI 3.14159

#define RADIUS 5

#define CIRCUMFERENCE 2 * PI * RADIUS 不建议这样使用

2. 当预处理器搜索 #define 定义的符号的时候,字符串常量的内容并不被搜索。

#define HELLO "Hello, "

#define WORLD "world!"

#define GREETING HELLO WORLD

printf(GREETING); // "Hello, world!"

2.typedef指令 

typedef为C语言的关键字

作用: 是为一种数据类型(基本类型或自定义数据类型)定义一个新名字,

不能创建新类型 

2.1 typedef和宏的区别 

1、与define定义宏不同,typedef这个关键字的本质是做类型重命名

2、宏是预处理指令,本质是在预处理时进行文本替换,而typedef的确是由使用者对已有的类型进行重命名。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值