2015-12-28 80 views
0

我最近开始读cat.c与功能io_blksize感到困惑,定义如下这样的功能:io_blksize似乎刚刚返回IO_BUFSIZE

static inline size_t 
io_blksize (struct stat sb) 
{ 
    return MAX (IO_BUFSIZE, ST_BLKSIZE (sb)); 
} 

enum { IO_BUFSIZE = 128*1024 }; 
#define DEV_BSIZE 4096 
#define ST_BLKSIZE (statbuf)  DEV_BSIZE 

现在的问题是io_blksize似乎总是返回IO_BUFSIZE,为什么不直接定义功能:

static inline size_t 
io_blksize (struct stat sb) 
{ 
    return IO_BUFSIZE; 
} 

并在宏ST_BLKSIZE参数sb有什么影响? ST_BLKSIZE(sb)似乎总是返回4096

+5

也许这样的自动配置可以替代#defines(如果适用)? –

+1

相关的宏(特别是'ST_BLKSIZE()')依赖于操作系统,最后一个宏甚至可以根据当前的文件/设备返回不同的值。 – vonbrand

回答