2015-12-28 83 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

回答