typedef用法

SV学习总结1--typedef enum与enum等用法及typedef常见用法总结 直接声明枚举变量时,变量名不具备类型标识功能,这是两段代码本质区别。typedef 的核心价值是创建类型别名,使代码更简洁;→ 后续尝试用变量名声明新变量会报错。将匿名枚举类型定义为新类型名。声明变量(本质是类型别名)类型名 ordinal_e。变量 position。第一段代码(正确✅)第二段代码(错误❌) 阅读详情

今天看到

typedef quint16
Typedef for unsigned short. This type is guaranteed to be 16-bit on all platforms supported by Qt.

一下Typedef用法来自百度百科:


typedef 声明,简称 typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些 数组等地方都大量的用到。

它有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法

typedef int size; 

 //此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size:

typedef 还可以掩饰复合类型,如指针和数组。


例如,你不用像下面这样重复定义有 81 个字符元素的数组:  char line[81];  char text[81];  定义一个 typedef,每当要用到相同类型和大小的数组时,可以这样:  typedef char Line[81];  此时Line类型即代表了具有81个元素的字符数组,使用方法如下:  Line text, secondline;  getline(text);

同样,可以象下面这样隐藏指针语法:

typedef const char* pstr;

int mystrcmp(pstr, pstr);//标准函数 strcmp()有两个‘ const char *'类型的参数


typedef int (*PF) (const char *, const char *); 

 这个声明引入了 PF 类型作为函数指针的同义字,该函数有两个 const char * 类型的参数以及一个 int 类型的返回值。如果要使用下列形式的函数声明,那么上述这个 typedef 是不可或缺的:  PF Register(PF pf);  Register() 的参数是一个 PF 类型的回调函数,返回某个函数的地址,其署名与先前注册的名字相同。做一次深呼吸。下面我展示一下如果不用 typedef,我们是如何实现这个声明的:  int (*Register (int (*pf)(const char *, const char *))) (const char *, const char *);

typedef 和存储类关键字(storage class specifier)

typedef 就像 auto,extern,mutable,static,和 register 一样,是一个存储类关键字。

typedef register int FAST_COUNTER; // 错误  

编译通不过。问题出在你不能在声明中有多个存储类关键字。因为符号 typedef 已经占据了存储类关键字的位置,在 typedef 声明中不能用 register(或任何其它存储类关键字)。

1、typedef的最简单使用  typedef long byte_4;  给已知数据类型long起个新名字,叫byte_4。  

2、 typedef与结构结合使用  

typedef struct tagMyStruct 

 { 

 int iNum;  

long lLength;  

} MyStruct; 

 这语句实际上完成两个操作: 

 1) 定义一个新的结构类型  struct tagMyStruct  {  int iNum;  long lLength;  }; 

 分析:tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct 关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。

我们可以用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct varName来定义变量是不对的,因为struct 和tagMyStruct合在一起才能表示一个结构类型。 

 2) typedef为这个新的结构起了一个名字,叫MyStruct。  typedef struct tagMyStruct MyStruct;  因此,MyStruct实际上相当于struct tagMyStruct,我们可以使用MyStruct varName来定义变量。

C语言当然允许在结构中包含指向它自己的指针,我们可以在建立链表等数据结构的实现上看到无数这样的例子

2. typedef & 结构的问题  

当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?

typedef struct tagNode 

 {  char *pItem;  

          pNode pNext;  

  } *pNode;

根据我们上面的阐述可以知道:新结构建立的过程中遇到了pNext域的声明,类型是pNode,要知道pNode表示的是类型的新名字,那么在类型本身还没有建立完成的时候,这个类型的新名字也还不存在,也就是说这个时候编译器根本不认识pNode。

 解决这个问题的方法有多种:  

1)、  typedef struct tagNode  {  char *pItem;  struct tagNode *pNext;  } *pNode;  

2)、  typedef struct tagNode *pNode;  struct tagNode  {  char *pItem;  pNode pNext;  };  注意:在这个例子中,你用typedef给一个还未完全声明的类型起新名字。C语言编译器支持这种做法。  

3)、规范做法:  struct tagNode  {  char *pItem;  struct tagNode *pNext;  };  typedef struct tagNode *pNode;


Qt开发总结(4)——Qt全局定义 《clean code》中说自己的工程最好创建自己的数据类型定义。Qt在其QtGlobal头文件中包含了一些全局定义。包括基本数据类型、函数和宏定义。 数据类型 数据类型定义是对基本类型的重定义,是为了确保在各个平台上各数据类型都有统一的确定的长度。其他一些定义是与Qt消息处理相关的类型。 Qt数据类型 等效定义 描述 ... 阅读详情

相关推荐

typedef 的用法总结

这些高级用法展示了typedef的强大和灵活性,能够使代码更加模块化、可维护并增强类型安全。你可以通过typedef为复杂的类型、结构体、函数指针、数组和指针定义别名,简化代码。提供类型安全,避免类型错误。与#define、条件编译等结合使用,实现更复杂的类型定义。

dlz0836的博客 769

Qt编程遇到的typedef

typedef和宏的用法类似 typedef double pi; #define pi double 两者都是把double类型重命名为double,不同之处在于: typedef是在系统中新建立了一种数据类型,只能对其进行写的操作。而#define只是简单的名字替换。在预处理时,只是把相应宏进行展开。并且#define可以当作一个简单的函数来进行使用,其效率比函数要更快。 具体参考h

qq_32225779的博客 4028

Android PackageManagerService 总结(一)应用市场下载安装apk流程

前言: 本篇文章是对系统包安装流程的总结,基于Android12 上 com.android.packageinstaller 源码的分析,第三方应用商城(华为商城,小米商城,应用宝,豌豆荚,酷安等)下载安装应 用,在普通安装和静默安装app两种方式下,对代码流程的梳理和讲解。 触发安装: 当你在商城界面中点击安装按钮,应用会自动下载,下载完成后就会调起系统安装应用的界面,此种触发方式一般是通过Intent 隐式调用的,我们先阅读如下代码: ......

u012514113的专栏 1万+

使用typedef绕过Qt中的坑

关于信号槽的灵活使用之前的文章已经介绍过了,今天主要总结一下在信号槽中不能随意使用的地方以及如何使用typedef绕过这些坑。

JiajieZhuo的博客 2151

Unity URP风格化水面Shader全流程实现与性能优化指南

在游戏开发中,Shader是实现特定视觉风格的核心技术,它通过编写在GPU上运行的程序,控制模型每个像素的最终颜色与光照表现。其原理在于对顶点位置、纹理坐标、光照信息及深度等数据进行一系列数学运算与插值。这项技术的价值在于能够以极高的自由度创造从写实到卡通的各种渲染效果,同时通过算法优化实现对硬件资源的精准控制。在移动游戏、独立游戏等对性能与风格化有强烈需求的场景中,自定义Shader尤为重要。本文聚焦于使用Unity URP渲染管线,从零构建一个高效的风格化水面Shader,详细拆解了深度色、波浪动画、边

weixin_34320724的博客 372

解决linux 2.5G网卡驱动问题

解决linux 2.5G网卡驱动问题 关键词:2.5G网卡驱动,ubuntu,安装,2.5G Ethernet LINUX driver,Realtek网卡驱动 由于2.5G网卡较新,各linux发行版的通用驱动已不适用,新装的系统会出现无法上网问题,由于国内网络环境去Realtek官网很难下载到驱动文件,故本文提供github上的2.5G Ethernet LINUX driver r8125 for kernel up to 5.6的版本驱动文件r8125-9.003.05.tar.bz2各位可以自

poorguy_aos的博客 1万+

typedef的详细理解

最后给大家上点难度,下面这段代码如何使用typedef使其变的好理解。大家好好思考,若是有问题可以私信我,我给你讲解。

2203_75422717的博客 696

射频指纹识别技术:原理、应用与深度学习实现

射频指纹识别(RFFI)是一种基于硬件特征的设备身份认证技术,通过分析无线设备发射信号中的独特硬件特征实现设备识别。其核心原理源于发射器硬件电路的非线性特性,如功率放大器的相位噪声和混频器的非线性失真,这些特征具有难以伪造的特点。在物联网和边缘计算场景中,RFFI技术展现出独特优势,尤其在智能家居和工业物联网中,能有效防止非法接入和设备伪造。深度学习方法的引入进一步提升了RFFI的性能,通过自动特征提取和端到端优化,显著提高了识别准确率。本文详细探讨了RFFI的技术原理、应用场景及实现方法,为相关领域的研究

weixin_30457465的博客 890

2022-11-14 QT

1.关于QT的一个重要机制的对象树机制的c++代码。

weixin_62323204的博客 396

ESP32脑机接口开发板:EEG信号采集与应用开发指南

脑机接口(BCI)技术通过采集脑电图(EEG)信号实现人机交互,其核心在于高精度生物电信号采集与实时处理。基于ESP32微控制器的开发平台结合专业级ADS1299 ADC芯片,可构建8通道EEG信号采集系统,支持250SPS采样率与可编程增益。这种嵌入式解决方案在科研教育领域具有显著优势,既能满足信号质量要求,又大幅降低开发门槛。典型应用包括实时脑电波可视化、注意力检测等BCI场景,通过Python生态工具链(如BrainFlow、LSL)可快速实现数据处理。开发时需注意电极阻抗控制(<10kΩ)和50/6

weixin_42518874的博客 344

告别单一查询!MultiQueryRetriever在LangChain中的高级用法解析

本文深入解析了LangChain中的MultiQueryRetriever高级用法,该工具通过大语言模型自动生成多样化查询,显著提升文档检索的召回率和准确性。文章详细介绍了其核心机制、高级配置调优策略以及在多语言和专业领域中的实际应用,为开发者提供了优化知识库问答系统的实用方案。

weixin_28730927的博客 271

C++ typedef 以及 typedef struct 用法

C++ typedef 以及typedef struct 用法1 概述2 typedef作用及用法3 区别 #define4 typedef struct在c/c++中的区别4.1区别一4.2区别二5 参考资料 1 概述 typedef 为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 typedef 本身是一种存储类的关键字,与 auto、extern、static、register 等关键字不能出现在同一个表

liuluan03161009的博客 8255

【ISAR成像定标方法(1)—转台目标的RD成像算法MATLAB仿真】

ISAR成像定标方法的研究具有重要意义,但是与之相关的学习资料以及仿真对于小白来说很难找或者很杂乱,本人作为小白之一在研究过程中苦不堪言,现在自己所要研究的定标内容已经完成,以后还学不学雷达也不一定,因为后面的路更难,现在打算把一些相关推导和仿真结果列出来,以供小白交流学习使用,希望能有点帮助。(PS:由于公式和符号的原因,采用图片形式说明)

此木旧年的博客 6418

C++ 中typedef的用法总结

在总结中,比较简单的我只是做了简略的总结,对我来说比较难理解的做了重点的解析。用于为基本数据类型定义一个新的名字,使代码更具可读性或便于修改。示例:这里将int类型定义为Integer,之后就可以使用Integer来声明变量,就像使用int一样。这种方式在代码中如果需要频繁使用int类型,并且希望提高代码可读性(例如,Integer可能暗示这个int变量在特定的业务逻辑中有特殊含义)或者在需要修改类型时(比如将int改为long),只需要修改typedef语句即可。在深入typedef。

small__dogs的博客 4521

Unreal5(虚幻五) 实现UI与C++代码逻辑的交互 保姆级教程

本人有Unity基础,刚学UE几天,把这一套处理流程记录一下备用。

qq_42915442的博客 9816

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Typedef Struct 用法详解

Typedef Struct 用法详解 一、typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间。 实例像: typedef int INT; typedef int ARRAY[10]; typedef (int*) pINT; typedef可以增强程序的可读性,以及标识符的灵活性...

PengCoX 9937

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

typedef用法详解

typedef与#define的区别: (1)typedef创建的符号名只限于类型,不限于值 (2)typedef由编译器解释,不是预处理器 typedef的四种用法 在实际应用中,typedef主要有下面四种用法: 1)typedef基本数据类型取“别名” 也就是说,C语言中的所有数据类型都可以用typedef关键词来重新定义类型名 typedef unsigned int size; typedef unsigned int16 u16; typedef unsigned int8 u8; . . .

wu_junwu的博客 4万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

typedef的用法简介

作用 typedef是C语言的一个重要的关键字,是为数据类型的定义一个新的名字。也就是类型的别名。 例: 定义一个int 型变量,并对其赋值,输出变量的值 #include<stdio.h> int main(void) { int a = 10; printf("a = %d", a); return 0; } 如果我想使A代表int类型呢?也就是A是int的别名 #include<stdio.h> typedef int A; int main(void)

shanglala的博客 1万+

typedef的用法——c语言

typedef的用法

weixin_47783699的博客 1万+

c语言中typedef的用法

typedef是为现有的类型起一个别名,使使用起来更加的方便,注意一点,它并没有产生新的类型。 typedef int BOOL;为int型起了一个新的别名BOOL。例如下边的代码,BOOL为int的别名,然后就可以直接使用了。 typedef int BOOL; #define TRUE 1 #define FALSE 0 BOOL flag = TRUE; 在结构体中的用法 typ...

Mr.yang 2万+

typedef的用法

typedef的4种常见用法: 1、给已定义的变量类型起个别名; 2、定义函数指针类型; 3、定义数组指针类型; 4、定义数组类型。 没加typedef之前如果是个数组,那么加typedef之后就是数组类型; 没加typedef之前如果是个函数指针,那么加typedef之后就是指针类型; 没加typedef之前如果是个指针数组,那么加typedef之后就是指针数组类型; typedef char ...

qq_27446275的博客 997

C++ typedef用法详解

typedef的4种常见用法:1. 给已定义的变量类型起个别名;2. 定义函数指针类型;3. 定义数组指针类型;4. 为复杂的声明定义一个新的简单的别名

Jason_Lee155的博客 3233

C语言中typedef的用法

double x;double y;double z;在这里,结构体 struct Point 为新的数据类型,在定义变量的时候均要向上面的调用方法一样有保留字 struct,而不能像 int 和 double 那样直接使用 Point 来定义变量。double x;double y;double z;} Point;在上面的代码中,实际上完成了两个操作:double x;double y;double z;

pangyushuang的博客 1万+

typedef的详细用法

不太想谈#define, 在题主的例子的这种用法里, 它就是个文本替换工具, 预处理器完成的, 无脑替换, 跟word里的replace一模一样, 不关编译器的事. 我想谈一下typedef. 搞懂了c++创始人写的<the design and evolution of cpp>中的下面这个例子, 有助于你理解typedef: typedef int P(); typedef int Q(); class X { static P(Q); // 等价于`static int Q()`,

寻梦&之璐 4454

关于typedef的用法

见示例: CASE 1 #include<stdio.h> typedef int ZHAGNSAN;//为 int 再重新多取一个名字, ZHAGNSAN等价于 int typedef struct Student { int sid; char name[100]; char sex; }ST; int main(void) { int i...

有趣的人生 一半是山川湖海 一半是初心情怀 219

python typedef用法_typedef的用法,C语言typedef详解

C语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的数据类型名称来定义变量的类型、数组的类型、指针变量的类型与函数的类型等。例如,C 语言在 C99 之前并未提供布尔类型,但我们可以使用 typedef 关...

weixin_39963830的博客 1117
上一篇: ubuntu11.10 系统下系统没有声音及Gentoo上的ALSA
下一篇: qt 国际化tr()
丁老师的技术随笔
博客等级 码龄15年 390粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值