码迷,mamicode.com
首页 > 其他好文 > 详细

size_t和ssize_t

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

标签:style   blog   http   color   io   使用   ar   art   sp   

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

标签:style   blog   http   color   io   使用   ar   art   sp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!