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

Возможно, поэтому auto configure может заменить #defines, если это необходимо? –

+1

Соответствующие макросы (в частности, 'ST_BLKSIZE()') зависят от операционной системы, а последняя может даже возвращать разные значения в зависимости от файла/устройства под рукой. – vonbrand

ответ