+ -
当前位置:首页 → 问答吧 → skyeye uclinux

skyeye uclinux

时间:2011-03-03

来源:互联网

大家好:下面 是 块设备驱动 的 其中一段 代码 , 呵呵,不需要理解是什么意思,我就是对语法有些不明白,红色的部分 我不太明白, 这在一个函数里面 咋又出来个 像函数 又不是函数的东西呢?我问了老师 说是 “宏” ,我说宏哪是这么写的呢,大家说说!感激不尽!
* Transfer a single BIO.
*/
static int sbull_xfer_bio(struct sbull_dev *dev, struct bio *bio)
{
int i;
struct bio_vec *bvec;
sector_t sector = bio->bi_sector;

/* Do each segment independently. */
bio_for_each_segment(bvec, bio, i) {
char *buffer = __bio_kmap_atomic(bio, i, KM_USER0);
sbull_transfer(dev, sector, bio_cur_sectors(bio),
buffer, bio_data_dir(bio) == WRITE);
sector += bio_cur_sectors(bio);
__bio_kunmap_atomic(bio, KM_USER0);
} return 0; /* Always "succeed" */
}

作者: viktor2000   发布时间: 2011-03-03

c99中除了内联函数,其他函数都不能定义在函数体内,因为这个函数前面没有加 inline,所以确定不是内联函数,能编译得过的话,因该是个宏吧。

作者: athlan7destiny   发布时间: 2011-03-03