嵌入式C语言基础:一文读懂#define与typedef的区别

嵌入式C语言基础:一文读懂#define与typedef的区别,第1张

嵌入式C语言基础:一文读懂#define与typedef的区别

在嵌入式开发中经常会用到宏定义define和typedef,它们俩在使用上有些类似,容易混淆,那么他们有什么区别呢?

二者的本质

#define是宏定义,它是一种预处理命令,在预处理的时候进行简单的文本替换 *** 作,其表达式一般如下:

#define 标识符 字符串   

在预处理时会把自己定义的标识符替换为宏定义中的字符串,比如:

#define PI 3.14

这个宏定义的作用是把代码中的PI替换为3.14,在程序中遇到PI就可以把他看作3.14这个常数(前提是在宏定义的作用域内)。
typedef是C语言中的关键字,他的作用是为复杂的声明定义起一个别名,比如在STM32开发中,我们经常可以看到诸如uint32_t这类自定义数据类型,这个数据类型就是通过typedef实现的:

typedef unsigned int uint32_t; 

typedef更常见的是为结构等复杂数据类型起别名,以达到定义相关变量时更加方便的目的。

二者的区别

举例说明名二者的本质区别:

#define my_type1_t (int *)
typedef int* my_type2_t;


my_type1_t a, b; 

my_type2_t c, d;

其中,变量a,c,d为 int* 类型,而变量b为int型,这是因为my_type1_t并不是真正的数据类型,而是一个简单文本替代,而my_type2_t是自己定义的一个数据类型(int*的别名)。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5702514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存