typedef和#define

define 没有参加编译,在预处理的时候就被替换掉了。

typedef参加编译和链接。typedef是重命名,可以为枚举结构体等等重新命名,提高代码整洁。

一、typedef的用法

C语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:

typedef    int       INT;
typedef   (int*)   pINT;

typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。

二、define的用法

define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了,但也因此难以发现潜在的错误及其它代码维护问题,它的实例像:

define   FALSE        0
define   TRUE         1
define   Add(a,b)     ((a)+(b));
define   Loop_10      for (int i=0; i<10; i++)

三、typedef与#define的区别

  • #define 归预处理器管,typedef 归编译器管。
  • #define 是替换,typedef是重命名

个人结论:这两个都少用

C语言typedef与#define的区别相关推荐

  1. C语言-typedef与#define的区别

    目录 1 typedef 1.1 将复杂的声明简单化 1.2 定义平台无关的类型 1.3 与struct的结合使用 1.4 typedef使用公式 2 typedef与#define的区别 2.1 执 ...

  2. C语言 typedef 和 define 区别 - C语言零基础入门教程

    目录 一.typedef 简介 1.typedef 简化复杂的类型声明 A.定义普通变量 B.定义函数指针 C.定义结构体 2.定义与平台无关的类型 二.define 简介 三.typedef 和 d ...

  3. C++中typedef和define的区别

    typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: ...

  4. typedef与#define宏区别

    先让我们了解一下typedef的功能,typedef简单来说就是给类型取一个别名: 如 typedef int New   那么int就有一个别名叫New了,以后size就和int这个类型一共用法了. ...

  5. c语言错误c4430,C 语言 typedef 与 #define 比较

    Alvin typedef 与 #define 的区别 1. 执行时间不同 关键字 typedef 在编译阶段有效,由于是在编译阶段,因此 typedef 有类型检查的功能. #define 则是宏定 ...

  6. c语言typedef(c语言typedef和define)

    什么是C语言 C語言是1972年左右由DennisRitchie一??人在?????室(?稱AT&T)設?開發出?淼碾?腦程式語言.他??r與KenThompson?扇斯餐??UNIX作?I ...

  7. C语言 typedef 和 #define详解

    类型定义 (typedef) 摘自 <C程序设计语言>6.7节 C语言提供了一个称为typedef的功能,它用来建立新的数据类型名,例如,声明 typedef int Length; 将L ...

  8. typedef和define的区别

    typedef和define都能够对一个类型起新的别名,但这两者有一些不同之处:首先,typedef是在编译时完成的,define是在预处理时完成的:其次,先看比如进行如下定义: #define ch ...

  9. C语言typedefine 和define的区别

    define : 宏定义,在预编译阶段就进行处理,简单的字符串代换, typedefine: 编译时进行处理,不是简单的替换,而是对类型说明符的重新命名.被命名的标识符具有类型说明的功能, 代码说明 ...

最新文章

  1. 一个简单的更改让PyTorch读取表格数据的速度提高20倍:可大大加快深度学习训练的速度...
  2. 环境变量_UG环境变量设置
  3. 【CentOS Linux 7】实验7【FTP服务器配置管理】
  4. C# 两时间,时间间隔
  5. C#获取电脑IP、MAC地址示例代码
  6. mysql使用的索引长度_MySQL索引的索引长度问题
  7. 【汇编】汇编程序入门篇
  8. 第 21 章 中介者模式
  9. 富文本支持粘贴excel表格_Anki插件-OneNote importer(富文本批量导入)
  10. Wap Push Access Protocol(PAP)介绍-开放源码
  11. SQL Server 置疑修复
  12. 根据身份证号 计算具体年龄
  13. uniapp app 腾讯云 IM 通讯 封装基础登录方法
  14. 渠道商用假流量冒充真实用户
  15. SpringBoot设置网站页面小图标——Favicon
  16. 在opencv中如何生成灰度图
  17. error C2059: syntax error : 'constant'
  18. es6转es5的在线工具
  19. R语言学习记录之安装caret包与jupyter关联R内核
  20. 灾难恢复之什么是RTORPO?

热门文章

  1. CSS3伪元素、伪类选择器
  2. appium和selenium不同与相同之处
  3. spring和mybatis的整合开发(基于MapperScannerConfigurer的整合开发(适用于复杂项目,接口较多的情况))...
  4. flask框架基本使用(2)(响应与重定向)
  5. go语音实战读后感——一
  6. Android几秒后自动关闭dialog
  7. unity中怎么在InspectorI面板加LOGO
  8. 网页上线后音频不能自动播放
  9. js中变量作用域的小理解
  10. 解决ueditor jquery javascript 取值问题