原创 关于几个数据类型

2009-9-14 18:30 1555 11 12 分类: MCU/ 嵌入式

uint8_t是什么数据类型



WSN从零开始   2007-07-10 15:31   阅读1179   评论3  

字号:    




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


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


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


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


<?XML:NAMESPACE PREFIX = O />

 

按照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 <marekm@linux.org.pl>


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 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

文章评论1条评论)

登录后参与讨论

用户188034 2009-9-14 19:03

c99不熟悉
相关推荐阅读
用户1373263 2014-06-03 17:18
JESD204B转换器内确定性延迟解密
对于需要一系列同步模数转换器(ADC)的高速信号采样和处理应用,转换器具有去相位偏移和匹配延迟变化的能力至关重要。围绕该特性展开的系统设计极为关键,因为从模拟采样点到处理模块之间的任何延迟失配都会使性...
用户1373263 2013-11-26 10:03
PCB layout结合生产的设计要点
能够应用和生产,继而成为一个正式的有效的产品才是PCB layout最终目的,layout的工作才算告一个段落。那么在layout的时候,应该注意哪些常规的要点,才能使自己画的文件有效符合一般PCB加...
用户1373263 2013-10-29 15:27
线性稳压器和开关模式电源的基本概念
摘要 本文阐述了线性稳压器和开关模式电源(SMPS)的基本概念。目的是针对那些对电源设计和选择可能不很熟悉的系统工程师。文章说明了线性稳压器和SMPS的基本工作原理,并讨论了每种解决方案的优势和劣势...
用户1373263 2013-07-15 22:02
信号带宽和示波器带宽的整理
    首先第一个概念是,信号的带宽和信号的频率不是直接相关,而是和信号的上升时间相关。      比如方波,是一个频谱分量众多的信号,其包括了基波和高次谐波。它可以由很多个正弦波叠加而成。 ...
用户1373263 2013-07-15 21:28
关于特征阻抗的推导
...
用户1373263 2012-10-21 22:39
原来这个博客还是存在的
工作两年了,感觉自己得基础知识忘的差不多了,得好好再学习一下。同时也陷入了专业迷茫。 既然跑步都能坚持下来,学习应该也没有什么问题的。 少在网上闲逛,多运动,多思考,多学习。 晚上8点...
我要评论
1
11
关闭 站长推荐上一条 /2 下一条