[i=s] 本帖最后由 iamxzg 于 2010-6-12 11:33 编辑 [/i]
在LDD(第三版)中文版第60页第三、四行有这么两句话:“这时,你可以将cdev结构嵌入到自己的设备特定结构中,scull就是这样做的。这种情况下,我们需要用下面的代码来初始化分配到的结构:”
从翻译的语意来看,可以看出,上下文是一种承接关系。然而,据我所知,上下文应该是一种等价关系。
因为上文中的两行代码:struct cdev *my_cdev = cdev_alloc();
my_cdev->ops = &my_fops;
与下文的那一行代码: void cdev_init(struct cdev *cdev, struct file_operations *fops);
最终实现的效果是一样的,是一种结果两种途径的问题。而书上这么翻译,我觉得很容易产生误解,会让人觉得先cdev_alloc(),再cdev_init(),这样的话就重复了。
于是,在英文版56页找到原文:“Chances are, however, that you will want to embed the cdev structure within a device-specific structure of your own; that is what scull does. In that case, you should initialize the structure that you have already allocated with:”
个人觉得这么翻译比较准确:“然而,有个时候你想将cdev结构嵌入到自己的设备特定结构中,这种情况下,你应该这样初始化已经分配到的结构(scull也是这么做的):”
注意,红色字体,表明的是一种转折关系,这样上下文就等价。若是像书中那样翻译成“这时”,就是一种承接关系。
大家也来分析一下,觉得我是对的,顶一下。这样能告诉后面初学者不要犯错误。
iamxzg 于 2010-06-11 18:26:28发表:
期待看过的发表一下看法
satisfy 于 2010-06-11 08:25:38发表:
虽然不懂,也不清楚楼主说得对不对,不过楼主这种阅读方式实在太令人赞了
shenhao0129 于 2010-06-10 23:33:39发表:
恩,不错,看的很仔细,这本书我还没怎么看呢