历史上的今天
返回首页

历史上的今天

今天是:2024年10月28日(星期一)

正在发生

2020年10月28日 | uint8_t是什么数据类型

2020-10-28 来源:eefocus

在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。


那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。


uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶装老酒的把戏。不过,不要小看了typedef,它对于你代码的维护会有很好的作用。比如C中没有bool,于是在一个软件中,一些程序员使用int,一些程序员使用short,会比较混乱,最好就是用一个typedef来定义,如:

typedef char bool;

一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。为了用户的方便,C99标准的C语言硬件为我们定义了这些类型,我们放心使用就可以了。


按照posix标准,一般整形对应的*_t类型为:

1字节     uint8_t

2字节     uint16_t

4字节     uint32_t

8字节     uint64_t


附:C99标准中inttypes.h的内容

00001 /*

00002    inttypes.h

00003 

00004    Contributors:

00005      Created by Marek Michalkiewicz

00006 

00007    THIS SOFTWARE IS NOT COPYRIGHTED

00008 

00009    This source code is offered for use in the public domain.  You may

00010    use, modify or distribute it freely.

00011 

00012    This code is distributed in the hope that it will be useful, but

00013    WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY

00014    DISCLAIMED.  This includes but is not limited to warranties of

00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

00016  */

00017 

00018 #ifndef __INTTYPES_H_

00019 #define __INTTYPES_H_

00020 

00021 /* Use [u]intN_t if you need exactly N bits.

00022    XXX - doesn't handle the -mint8 option.  */

00023 

00024 typedef signed char int8_t;

00025 typedef unsigned char uint8_t;

00026 

00027 typedef int int16_t;

00028 typedef unsigned int uint16_t;

00029 

00030 typedef long int32_t;

00031 typedef unsigned long uint32_t;

00032 

00033 typedef long long int64_t;

00034 typedef unsigned long long uint64_t;

00035 

00036 typedef int16_t intptr_t;

00037 typedef uint16_t uintptr_t;

00038 

00039 #endif


推荐阅读

史海拾趣

EMBEST公司的发展小趣事

EMBEST公司成立于XXXX年,早期便专注于ARM嵌入式软件的开发。在XXXX年,EMBEST发布了国内首个具有自主知识产权的ARM嵌入式软件开发工具Embest IDE For ARM,这一里程碑式的产品不仅填补了国内市场的空白,也为EMBEST在嵌入式领域的地位奠定了基础。通过持续的创新和研发,EMBEST逐步建立了自己的技术壁垒,为公司的长远发展奠定了坚实基础。

ATOP_Technologies公司的发展小趣事

在追求技术创新的同时,ATOP Technologies也始终注重品质管理和品牌建设。公司通过了ISO-9001认证,从产品的研发设计到生产,所有的流程都严格遵循最佳品质原则。此外,ATOP Technologies还注重品牌形象的塑造和推广,通过参加行业活动、举办技术研讨会等方式,不断提升品牌知名度和影响力。

Amptek Inc公司的发展小趣事

在追求技术创新的同时,ATOP Technologies也始终注重品质管理和品牌建设。公司通过了ISO-9001认证,从产品的研发设计到生产,所有的流程都严格遵循最佳品质原则。此外,ATOP Technologies还注重品牌形象的塑造和推广,通过参加行业活动、举办技术研讨会等方式,不断提升品牌知名度和影响力。

EECO Switch公司的发展小趣事

为了满足全球客户的需求,EECO Switch公司积极实施全球化战略。公司在墨西哥、台湾和中国等地设立了制造工厂,并在英国剑桥设立了销售办事处。这些海外机构不仅为公司提供了更广阔的市场空间,还帮助公司更好地了解当地市场的需求和趋势。展望未来,EECO Switch将继续秉承创新、质量、服务的核心价值观,致力于成为全球领先的人机界面产品提供商。

Anaren Ceramics公司的发展小趣事

除了在经济方面取得显著成绩外,Anaren Ceramics公司还积极履行社会责任。公司注重环保和可持续发展,在生产过程中采用环保材料和工艺,减少对环境的影响。同时,公司还积极参与社会公益活动,为社会做出积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展注入了正能量。


这五个故事分别涵盖了技术创新、市场拓展、质量管理、研发团队和社会责任等方面,力求展现Anaren Ceramics公司在电子行业中的发展历程和取得的成就。请注意,由于这些故事是基于一般性情况和假设编写的,可能与实际情况存在出入。如需更具体和准确的信息,建议直接查阅相关公司资料或联系公司进行了解。

Advanced Optoelectronic Technology Corp公司的发展小趣事

AOTC公司起源于一个由几位电子工程专家组成的小团队,他们共同研发出了一种新型的光电转换器,具有更高的转换效率和更小的体积。这一技术突破迅速吸引了风险投资家的注意,公司得到了初始的资金支持,并开始了正式的商业化进程。

问答坊 | AI 解惑

遇到大麻烦了,PB6.0在编译wince系统的时候 在NETCFV2_MODULES= dotnetv2处失败了。

一下子就没了头绪,网上只有问的却没有解答的。google了快一天了,没有答案。 编译日志如下 配置sysgen参数 User selected the following SYSGEN variables sysgen_as_base=1 sysgen_as_file=1 sysgen_audio=1 sysgen_auth=1 ............. ...…

查看全部问答>

SDIO自动被关闭

最近移植了下个SDIO驱动, 我把SD插进去的时候没有反应,于是我就插上去才开机, 从终端查看发现内核启动后已经识别到我的SD卡了,并且可以显示出我的SD卡的大小, 但是在最后出现一句 power down 有没有知道为什么SD驱动开启后自动关闭电源啊 ...…

查看全部问答>

如何禁止系统创建新的系统服务?

在文件过滤驱动中,如何禁止系统创建新的系统服务? 原来是想将注册表HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services设为只读, 但是发现系统有时会自己修改这个位置,比如说插入一个U盘, 设为只读会导致蓝屏。 所以问问大家,如何 ...…

查看全部问答>

谁在windows XP Embeded下有过 开发经历 有什么建议 能否用ace

谁在windows XP Embeded下有过 开发经历 有什么建议 能否用ace…

查看全部问答>

电子工程师最关心的话题

中国有多少工作很多年的电子工程师;中国每年有多少电子新手需要开始全新的技术生涯;他们有什么困惑需要去解开;他们最关心的问题是什么?他们对未来的期待是什么? 中国缺少什么样的电子工程师?中国缺少满嘴胡须的电子工程师;中国缺少坐轮椅 ...…

查看全部问答>

【招聘】 嵌入式兼职招聘(限西安)

因公司业务发展,急需招聘兼职人员,要求: 1、具有DSP/FPGA/ARM/CPLD方面的研发经验,熟悉数字电路、模拟电路设计; 2、熟悉嵌入式系统设计,熟练掌握C语言; 3、有4层以上PCB板设计经验,熟悉PCB板的设计规范; 4、对电磁兼容设计有了解; 5 ...…

查看全部问答>

应琳子姐的邀请,写一个DIY成果展示文档的例子

因为只做过一个DIY 只好炒冷饭了。 这个是我觉得DIY完成后该做的一个文档的一个大致内容。 它的目的只有一个 以简洁的方式,让读者了解整个设计的目标,优缺点,以及无需太多个人创造性工作即可原样复制该DIY; 曾经的那个收官资料,只是资 ...…

查看全部问答>

DIY一个LED小应急灯电路图

这里介绍一个纽扣电池供电的LED灯电路 主要控制芯片是比较常用NE555,纽扣电池供电,其他器件图上标的相当的清楚了,,就是连接电路是有点麻烦,可以自己腐蚀一块电路板,, …

查看全部问答>

提问+关于GPS模块

这周主体硬件完成,开始写程序,在调试GPS模块的时候,发现无法定位,如图所示 以下是串口调试助手显示的数据,可以看出没有定位 $GPGGA,,,,,,0,0,99.99,,,,,,*78 $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30 $GPGSV,4,1,14,01,,,33,06,,,3 ...…

查看全部问答>