嵌入式 ssize_t与size_t的联系

原创 2013年12月02日 14:55:27

Ssize_t 与size_t

跟踪linux源码得到以下宏:

#ifndef _SIZE_T

#define _SIZE_T

typedef __kernel_size_t size_t;

#endif

#ifndef _SSIZE_T

#define _SSIZE_T

typedef __kernel_ssize_t ssize_t;

#endif

在不同平台上,其具有不同的定义:

typedef unsigned long __kernel_size_t;

typedef long __kernel_ssize_t;

typedef unsigned int __kernel_size_t;

typedef int __kernel_ssize_t;

这就是两个类型的实际定义,从字面上意思来说:

Ssize_t = signed size_t

使用位置:

在对于缓冲区大小等等非负值的长度时一般使用 size_t;

而对于像

ssize_t (*read) (struct file *, char __user *, size_t, loff_t*);

ssize_t (*write) (struct file *, const char __user *, size_t,loff_t *);

ssize_t (*aio_read) (struct kiocb *, const struct iovec *,unsigned long, loff_t);

ssize_t (*aio_write) (struct kiocb *, const struct iovec *,unsigned long, loff_t);

可能失败返回< 0的函数时,则使用ssize_t;

ssize_t (*read) (struct file *, char __user *, size_t, loff_t*);

另外相似的一个类型: loff_t

定义如下:

#if defined(__GNUC__)

typedef __kernel_loff_t loff_t;

#endif

是一个long long 类型

#ifdef __GNUC__

typedef long long __kernel_loff_t;

#endif

学习笔记:int 和 size_t互转的最好解决方案

#include ////////////////////////////////////////////////////////////////////////////////////////...
  • audi2
  • audi2
  • 2015年02月07日 18:05
  • 1180

size_t类型总结

1、sizeof返回的必定是无符号整形,在标准c中通过 typedef 将返回值类型定义为size_t.  若用printf输出size_t类型时,C99中定义格式符%zd;若编译器不支持可以尝试%...
  • u010984552
  • u010984552
  • 2016年08月30日 09:40
  • 770

05 简单的字符设备驱动操作

最近生活和工作都有些混乱,有些坚持很久的东西也都中断了。中断这件事就像男人出轨,有第一次就会有第二次,永远无法原谅;中断了以后再回到以前的状态也是很困难的,于是时隔了这么久。希望能尽快恢复。...
  • aysa_bear
  • aysa_bear
  • 2016年06月27日 18:13
  • 158

嵌入式linux和嵌入式android系统有什么区别和联系?

转自:http://bbs.eeworld.com.cn/thread-430437-1-1.html   这个问题很多人问,尤其是初入嵌入式的菜鸟。其实大家都认为android是java,已经不是l...
  • xgbing
  • xgbing
  • 2014年02月28日 09:45
  • 10038

转载-size_t与uint32_t取舍|编程风格

转载地址:http://blog.sina.com.cn/s/blog_593af2a7010180qx.html     今天我来讲讲size_t,借此来说明我的一些代码风格。    我们...
  • chunyexiyu
  • chunyexiyu
  • 2014年02月28日 17:13
  • 1204

java&nbsp;转义字符

中转义字符: 1.八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377'  \0:空字符  2.Unicode转义字符:\u + 四个十六进制数字;0~65535  \u0000:空...
  • qq741997129
  • qq741997129
  • 2014年06月05日 16:04
  • 1647

HTML中&nbsp 和空格的区别

刚刚学写HTML代码时候,我曾碰到这样的问题:在代码里加入一连串空格,在浏览器上显示的时候,却只看到一个空格。常用的解决方法是,用" "来代替空格,一个" "相当于一个空格,多加几个" "就可以把空格...
  • you1314520me
  • you1314520me
  • 2013年09月19日 18:26
  • 44705

智能化嵌入式系统-杜荣华

编者按:计算机是帮助人们思考的机器,一点也不具备行动的能力。当我们把计算机嵌入各种装置之中,让它发挥指挥控制的作用,这些本来已经具有行动能力的装置一下子就智能化了。大到穿梭太空的火箭、卫星,小到我们掌...
  • w5688414
  • w5688414
  • 2014年09月14日 11:58
  • 1637

为什么size_t重要?

为什么size_t重要?(Why size_t matters) 10 September 2014         之前在《内存拷贝的注...
  • huilingwu
  • huilingwu
  • 2016年05月05日 20:29
  • 758

C/C++中size_t 的用法

size_t在C语言中就有了。它是一种“整型”类型,里面保存的是一个整数,就像int, long那样。这种整数用来记录一个大小(size)。size_t的全称应该是size type,就是说“一种用来...
  • chaoruizhe123
  • chaoruizhe123
  • 2015年03月24日 12:04
  • 3007
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式&nbsp;ssize_t与size_t的联系
举报原因:
原因补充:

(最多只允许输入30个字)