typedef和#define的定义与区别

Anolis OS 23实战:5分钟搞定AI环境配置(含NVIDIA驱动一键安装) 本文详细介绍了如何在Anolis OS 23上快速配置AI开发环境,包括NVIDIA驱动的一键安装和TensorFlow、PyTorch等AI框架的部署。通过智能硬件适配引擎和优化后的二进制包,用户可在5分钟内完成传统需要数小时的配置工作,显著提升AI项目开发效率。 阅读详情

一、typedef的用法

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

typedef    int       INT;
typedef    int       ARRAY[10];
typedef   (int*)   pINT;

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

二、#define的用法

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

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

在Scott Meyer的Effective C++一书的条款1中有关于#define语句弊端的分析,以及好的替代方法,大家可参看。

三、typedef与#define的区别

从以上的概念便也能基本清楚,typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义 常量,到了C++,const、enum、inline的出现使它也渐渐成为了起别名的工具。有时很容易搞不清楚与typedef两者到底该用哪个好,如 #define INT int这样的语句,用typedef一样可以完成,用哪个好呢?我主张用typedef,因为在早期的许多C编译器中这条语句是非法的,只是现今的编译器 又做了扩充。为了尽可能地兼容,一般都遵循#define定义“可读”的常量以及一些宏语句的任务,而typedef则常用来定义关键字、冗长的类型的别 名。

宏定义只是简单的字符串代换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变量的功能。请看上面第一大点代码的第三行:

typedef    (int*)      pINT;
以及下面这行:
#define    pINT2    int*

效果相同?实则不同!实践中见差别:pINT a,b;的效果同int *a; int *b;表示定义了两个整型指针变量。而pINT2 a,b;的效果同int *a, b;表示定义了一个整型指针变量a和整型变量b。

注意:两者还有一个行尾;号的区别哦!

 
mapbox高阶,加载倾斜摄影 本文详细介绍如何基于mapbox-gl v3.8.0版本实现倾斜摄影的加载,亲测可用。希望能帮助到您。一起学习,加油!加油! 阅读详情

相关推荐

ADS笔记,新旧两组仿真数据进行绘图和列表对比

原理图器件参数的不同,怎么进行对比观看,操作如下。

彭辉荣的博客 3869

typedef定义数据类型

typedef的作用

freeline的博客 2306

展会客流统计的客流统计系统,WiFi客流每时每客

一般展会的举行时间都在3-7天之间,展会作为市场部门一项重要工作,一直以来没有一项有效的工具能够提供数据支持。 展会最重要的是通过活动和产品来吸引参展者的参观,如何统计展会期间的客流量呢?如何通过将数据转化成为活动数据的支撑呢? 目前成熟的解决方案有,视频客流统计、WiFi客流统计、红外线客流统计等方式。由于展会通常的时间都比较短,视频、红外线客流统计采购及安装价格都比较高,需

isentech的博客 3994

typedef详解以及与宏定义#define的区别

typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,它与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中; typedef 中文解释:声明类型; typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(...

IT技术猿猴的博客 2376

用Python实现古诗词填字游戏(三)

古诗词做填字游戏的第三部分代码,也是最核心的部分。实现对诗文和关键字的选定,并确定文字的输出位置。

PosPro的专栏 6117

Unity游戏开发实战:手把手教你用C#实现一个简单的反向运动学(IK)控制器

本文详细介绍了在Unity游戏开发中如何使用C#实现一个简单的反向运动学(IK)控制器。通过建立骨骼层级结构、实现CCD算法和角度限制,开发者可以轻松创建自然的角色动画效果。文章还提供了可视化调试工具和性能优化方案,帮助提升开发效率。

weixin_42523711的博客 244

宏定义#Define和Typedef的用法和区别

一:各自的定义 (一) Typedef 本身是一种存储类的关键字,在计算机编程语言中用来为复杂的声明定义简单的别名。 Typedef 的含义: 找到你所要声明的通用格式。例如这里申明 inta[4],b[4],c[4],只有a,b,c不同,但是他们有相同的申明模式 int<名字>[4]; 用你想要申明的新类型名代替通用格式中的变化部分。例如这里就是用新类型int...

qq_41321905的博客 1186

科研绘图神器Origin2024最新中文版安装教程:5分钟搞定所有配置

本文提供了一份详细的Origin2024中文版安装与配置指南。从系统环境核查、安装包获取验证,到分步安装、语言切换及关键初始设置,手把手教你5分钟完成所有基础配置。同时,指南还分享了首次启动后的个性化设置与高效绘图工作流,助你快速上手这款科研绘图神器,提升数据处理与图表制作效率。

weixin_29247219的博客 1042

typedef 和#define定义别名的区别

typedef与#define 的区别一、typedef的用法 typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT; typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。二、#define的用法...

blogfeifei 134

【车载以太网】【架构】整体架构与协议标准

车载以太网架构图 应用层:DHCP /SOMEIP/DoIP/XCP/UDPNM 传输层:TCP/IP 网络层:IPv4/IPv6/ARP/ICMP 链路层:IEEE Ethernet MAC+VLAN 物理层:Ethernet PHY: 100BASE-T1/1000BASE-T1/100BASE-Tx

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 8357

Microsemi Libero系列教程(六)——Identify片上逻辑分析仪的使用

文章目录FPGA如何进行在线调试关于Microsemi片上逻辑分析仪FPGA片上逻辑分析仪原理预期效果0.准备一个创建好的Libero工程1.新建identify工程,并添加想要监测的信号2.管脚分配,编译下载3.设置触发类型4.IICE逻辑分析仪核资源占用 系列教程:Microsemi Libero系列教程 FPGA如何进行在线调试 对于嵌入式系统来说,如单片机,进行硬件级程序调试时,通常采用的是JLink/ST-Link调试器,在线调试的方式来获取程序实时运行的状态,可以观察程序运行流程、各种变量的值

whik1194的博客 1万+

#define与typedef定义的类型名的区别

1、可以用其他类型说明符对#define定义的类型名进行扩展,但对typedef所定义的类型名不能这样做。   例如:   #define peach int   unsigned peach i;  //加上unsigned类型说明符,正确!   typedef int banana;   unsigned banana i;  //加上unsigned类型说明符,错误! 2、...

weixin_30512043的博客 179

PCL 欧式聚类分割【2026最新版】

PCL中欧式聚类提取算法原理详解、代码实现以及一个大自然场景地物分割提取并保存分割结果到本地文件夹的应用案例。

点云侠的博客 40万+

宏定义#define,Typedef的区别和用法

做笔记整合用,很多都是参考以下网站:http://blog.youkuaiyun.com/qq_31360933/article/details/54143174宏定义与Typedef:宏定义#define:为预处理指令在编译处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只在编译已被展开的源程序时才会发现可能的错误并报错。通常用它来定义常量(包括无参量和带参量),以及用来实现那些“表面似和善...

Samkes2的博客 654

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

typedef 和 #define 宏定义核心区别

想给类型起别名(uint8_t、指针、结构体)→ 用typedef,类型安全,推荐想定义常量、通用代码片段、简单替换→ 用#define避坑:不要用#define给指针 / 数组类型起别名,极易产生逻辑错误。

2401_88936678的博客 194

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Object-C学习(五):结构体(struct)、typedef、以及与#define宏定义的区别

结构体:   结构体是一种数据类型的组合和数据抽象。    基本格式如下:        struct complex_struct{            double x, y;        };    这样就定义了一个由两个double类型组成的结构体,complex_struct是标示符,这种标示符成为Tag,我们可以把它的整体看做一个类型名,如果你想声明一个这种类型的变量可以像声明其他

xushuxuan 2368

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++ —— 非类中使用const定义常量的初始化,以及#define和typedef的区别

总结一下在非类中使用const关键字定义常量时的初始化问题,亲测VS2015。顺便记录#define宏和typedef的区别。 1 首先对const声明的常量的初始化做简单小结: 1 int w1 = 1, w2 = 2, w3 = 3; 2 3 int * const p1 = &w1, P1_1; //p1:指针常量,指针是常量; 4 ...

weixin_30279751的博客 168

#define和typedef区别及定义整理

(1)#define 是宏定义命令(在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”) 标识符:是指用来标识某个实体的一个符号 ...

樂小伍 377

typedef 和 #define 的区别

typedef和#define的区别

2301_81703165的博客 1549

C语言枚举和define定义常量区别;typedef和#define区别;static和typedef区别

一.枚举和define定义常量有什么区别? 1.#define 定义的常量不可以进行调试 2.#define定义的标识符常量布局由类型 3.枚举具有类型 **二.*typedef 和 #define有什么区别? 1.define没有参加编译,在预处理的时候被替换掉了。 2.typedef参加编译和连接。typedef是重命名,可以为枚举结构体等重新命名,提高代码整洁。 3.typedef intA...

E_kay的博客 378

宏定义 #define与typedef的区别。

#include <stdio.h>#define TP1 char* typedef char* TP2;int main(void){ TP1 a,b; TP2 x,y; printf("a=>%d,b=>%d\n",sizeof(a),sizeof(b)); printf("x=>%d,y=>%d\n",sizeof(x),siz...

weixin_30794851的博客 138

宏定义#define和类型定义typedef区别

先用我的话简单介绍一下: 宏定义就相当于替换,在预编译时进行替换,编译时候所有宏定义的代码改变为被替换的代码,不限制任何代码,都可以进行宏定义; 类型定义不能简单理解为替换,可以这样理解,这相当于给原来的所定义的类型,一个全新的名字,以后这个名字就代表u俺来的类型; 用代码解释如下: #define int_ptr int * int_ptr a, b;            

窗外阴天的博客 1058
上一篇: TCP的socket连接示例(linux&windows)
下一篇: 在2.6内核下不编译内核给iptables添加模块
max415
博客等级 码龄22年 16粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值