C语言之typedef和define
来源:互联网 发布:上海网络推广外包 编辑:程序博客网 时间:2024/05/16 18:36
typedef 和define 的区别:
define
是预处理指令,编译的时候只是简单的进行替换。
typedef 是c语言中的关键字,用来给已存在的类型定义别名。
在STM32官方库中我们可以看到大量的使用到了这个关键字。
如下面这个:
typedef struct{ uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef;
正是因为这个关键字,我们在库中看到了大量新的类型,使刚接触库开发的同学一下都懵了。
只要理解这个关键字只是一个替换就行了(不是简单的替换不能像Include一样,下面给例子做理解。)
#include<stdio.h>#define p int*void main(){ int c=3; p a,b; a=&c; b=&c; printf("%d\n",*a); printf("%d\n",*b); }
这段代码编译不通过,原因是为什么呢,我们来分析一下,
p a,b; 问题是 int * a,b; 这两句话相等吗,预处理器是这样翻译的吗。
int * a,b; 这句话的意思是 定义两个变量 ,指向整型的指针a,b;
如果翻译过来,是这样的话,那么程序是不会出错的,那为什么呢? 其实翻译过来,实际被翻译成了这样
int* a,int b;
我们可以看到 在使用#define定义新类型是,与我们想要的不一样,容易出错。
有麻烦就有解决麻烦的, 来看看 typedef ,好东西,大家要牢牢的记住。
我们把上面的程序改变
#include<stdio.h>typedef p int* void main(){ int c=3; p a,b; a=&c; b=&c; printf("%d\n",*a); printf("%d\n",*b); }
这一次看看运行结果,和我们想要的结果一样。
这下,你应该感悟到了#define 和typedef 的区别了吧。
所以在以后的开发中,我们要定义新的数据类型是使用 typedef 就行了。
0 0
- C语言之typedef和define
- C语言 define和typedef
- C语言 typedef 和 #define
- C语言之define与typedef区别
- C语言--typedef 和 #define 的区别
- c语言typedef 与 #define
- 程序猿之---C语言细节21(#define和typedef区别、结构体细节)
- 【c/c++】typedef和define
- 黑马程序员IOS-C语言-预处理、define和typedef
- C语言中typedef的用法和#define区别
- C语言中typedef和define的用法
- C语言中typedef 和 #define 的区别
- C语言中typedef和define一些理解
- C语言 typedef和define的具体区别
- C-define宏和Typedef
- C/C++ 之 typedef 和 define 的区别
- C++之typedef和#define
- c语言----#define、const、typedef的差别
- 为你的Java应用嵌入一个功能强大的文字编辑器
- word方式编辑EPUB电子书
- 将ITEYE博客制作为EPUB电子书
- XDOC Office 7.5.0发布
- 超神奇,Word文档变Flash表单
- C语言之typedef和define
- 推荐一个基于Flex的Web文档打印方案
- 文档格式转换利器XDocIO
- Flash在线文档阅读器::pdf、doc、docx、xls、xlsx、ppt、pptx、htm、txt、rtf、epub、csv、xdoc等
- 轻松搞定润乾报表Flash显示与打印
- 下载润乾报表Flash显示与打印插件
- 润乾报表Flash显示与打印插件4.5版发布
- SVG龙年吉祥
- 纯Java文档阅读器(word、pdf等)