#define和typedef的区别

简介: typedef和#define都是替一个对象取一个别名,来增强程序的可读性,但是它们有以下几个区别 1. 原理不同    (1)#define是C语言中定义的语法,它是预处理指令,在预处理的时候进行简单的字符串替换,不作任何的正确性的检查,不管是否正确照样带入替换,只有在编译的时候才会发现错误并报错    (2)typedef是关键字,在编译的时候处理,所以typedef是有类型检查的功能,在作用域内给类型定一个别名 2. 功能不同。


typedef和#define都是替一个对象取一个别名,来增强程序的可读性,但是它们有以下几个区别

1. 原理不同

   (1)#define是C语言中定义的语法,它是预处理指令,在预处理的时候进行简单的字符串替换,不作任何的正确性的检查,不管是否正确照样带入替换,只有在编译的时候才会发现错误并报错

   (2)typedef是关键字,在编译的时候处理,所以typedef是有类型检查的功能,在作用域内给类型定一个别名

2. 功能不同。

   (1)typedef用来定义类型的别名,这些类型包括内置的int、char等还包括struct等

   (2)#define不只是可以为类型取别名,还可以定义常量、变量等

3. 作用域不同

   (1)#define是没有作用域的,只要是之前预定义过的宏,在以后的程序中都可以使用,比如

            void Fun(void){

                    #define N 100 

            }

            那么这个宏在后面所有地方都可以用,宏是没有作用域的

   (2)typedef有自己的作用域,不过一般不在函数内部使用typedef

4. 对指针的操作不同

    看以下这段代码

    #define INTPTR1 int*

    typedef int* INFPTR2; 

    INTPTR1 p1, p2;

    INTPTR2 p3,p4;

  (1)INTPTR1 p1, p2; 宏替换之后变成int *p1, p2;变成声明一个整型指针p1,和整型变量p2

  (2)INTPTR2 p3,p4; 这边则是定义了两个整型指针p3和p4, INTPTR2为int *的别名

    从上面可以看出,进行宏替换只是单纯的字符串替换。而typedef为某一种类型定义别名带有一定的含义



目录
相关文章
|
安全 云栖大会 云计算
阿里云创业者计划:数字化时代的创新助推器
阿里云创业者计划助力初创企业数字化转型,提供最高100万上云抵扣金,1对1技术服务,及品牌曝光等综合支持。通过降低上云成本与技术指导,该计划旨在帮助企业在竞争中站稳脚跟,促进创新与行业发展。尽管面临审核流程及技术利用的挑战,该计划仍为创业创新提供了关键推动力。
518 4
阿里云创业者计划:数字化时代的创新助推器
|
11月前
|
网络协议 算法 安全
OSPF中的Totally Stub区域详解
OSPF中的Totally Stub区域详解
362 5
|
10月前
|
搜索推荐 机器人 定位技术
SEO 搜索引擎优化核心名词全解析
本文详细解析了 SEO(搜索引擎优化)中的核心名词,包括关键词、页面标题、元描述、网站地图、反向链接、锚文本、内部链接、页面权重、域权重、搜索引擎机器人、索引、收录、白帽 SEO 和黑帽 SEO。掌握这些术语及其作用,有助于提升网站在搜索引擎中的可见性和排名,实现长期发展。
318 20
|
10月前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB 分布式版 V2.0,安全可靠的集中分布式一体化数据库管理软件
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。
|
移动开发 C语言
C语言:&&和&、||和|有什么区别
在C语言中,&&和||是逻辑运算符,分别表示逻辑与(AND)和逻辑或(OR),它们用于连接两个布尔表达式,只有当两边都为真时&&返回真,||在至少一边为真时返回真;&和|是位运算符,对应地进行位级的与、或操作,它们对操作数的二进制位进行逐位处理。&&和||具有短路特性,而&和|没有。
12185 1
|
11月前
|
安全 数据安全/隐私保护 Android开发
深入探索iOS系统安全机制:从基础到高级
本文旨在全面解析iOS操作系统的安全特性,从基础的权限管理到高级的加密技术,揭示苹果如何构建一个既开放又安全的移动平台。我们将通过实例和分析,探讨iOS系统如何保护用户数据免受恶意软件、网络攻击的威胁,并对比Android系统在安全性方面的差异。
|
存储 安全 Cloud Native
阿里云推出创业者计划介绍,加入计划可获得最低3500元,最高100万抵扣金
阿里云创业者计划是面向中小企业推出的一项扶持计划,致力于为中小企业构建智能时代的核心竞争力,同时聚合众多知名投资机构、加速器、孵化器和大企业创新力量,向中小企业提供全方位的赋能与服务。成功加入计划后,阿里云将提供最低3500元、最高100万元的上云抵扣金,让中小企业享受免费的云资源和技术服务,助力初创企业开启智能时代创业新范式。
阿里云推出创业者计划介绍,加入计划可获得最低3500元,最高100万抵扣金
|
12月前
|
存储 传感器 安全
生物电子学:电子设备与生物系统的融合
【10月更文挑战第21天】生物电子学是生物学与电子学的深度融合,旨在通过生物材料和结构实现电子设备与生物系统的无缝对接。本文探讨其定义、发展历程、核心研究领域及未来应用,涵盖生物信息检测、生物医学信息处理、生物系统建模和仿真、分子电子学及生物医学仪器等方面,展现其在医疗、环保、信息技术等领域的广阔前景。
|
调度
【RT-Thread】学习日记之系统节拍Tick
【RT-Thread】学习日记之系统节拍Tick
181 0
|
算法 调度 容器
RT-Thread快速入门-互斥量
RT-Thread快速入门-互斥量
247 0
RT-Thread快速入门-互斥量