首页 > 其他 > 详细

size_t和ssize_t

时间:2014-09-03 12:36:16      阅读:257      评论:0      收藏:0      [点我收藏+]

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

 

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

/* sparc 64 bit */

typedef unsigned long          __kernel_size_t;

typedef long                   __kernel_ssize_t;

 

/* sparc 32 bit */

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

更多:http://blog.csdn.net/lalor/article/details/7426184

size_t和ssize_t

原文:http://www.cnblogs.com/youxin/p/3953177.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!