guobinname_301 发表于 2012-11-6 22:53:09

uboot1.1.6 中的C 语法问题

void env_relocate_spec (void)代码搬运中有nand_read
{
。。。。。。
ret = nand_read(&nand_info, CFG_ENV_OFFSET, &total, (u_char*)env_ptr);
。。。。。。}
这个nand_read(&nand_info, CFG_ENV_OFFSET, &total, (u_char*)env_ptr);

最后真正执行的是这个函数nand_read_ecc (mtd, from, len, retlen, buf, NULL, NULL);
这个函数的代码如下:
static int nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
                          size_t * retlen, u_char * buf, u_char * oob_buf, struct nand_oobinfo *oobsel)
{
        。。。。。。。
}
问:为什么开始的nand_read(&nand_info, CFG_ENV_OFFSET, &total, (u_char*)env_ptr);
入口参数是4个,而最后调用的static int nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
                          size_t * retlen, u_char * buf, u_char * oob_buf, struct nand_oobinfo *oobsel)的入口参数却是7个???????????
多出来的3个参数如何理解????????

embedsky_lhh 发表于 2012-11-7 09:24:20

nand_read方法里边调用的nand_read_ecc ,并不是直接调用的,

guobinname_301 发表于 2012-11-7 14:36:12

embedsky_lhh 发表于 2012-11-7 09:24 static/image/common/back.gif
nand_read方法里边调用的nand_read_ecc ,并不是直接调用的,

static inline int nand_read(nand_info_t *info, ulong ofs, ulong *len, u_char *buf)
{
        return info->read(info, ofs, *len, (size_t *)len, buf);
}
那这个返回函数的入口参数是5个,而调用它的只有4个入口参数,怎么理解????

embedsky_lhh 发表于 2012-11-7 15:22:38

guobinname_301 发表于 2012-11-7 14:36 static/image/common/back.gif
static inline int nand_read(nand_info_t *info, ulong ofs, ulong *len, u_char *buf)
{
        return inf ...

你看的不是同一函数,

guobinname_301 发表于 2012-11-7 23:16:19

大侠,那我换个角度来提这个问题
那程序在执行void env_relocate_spec (void)
{
        ret = nand_read(&nand_info, CFG_ENV_OFFSET, &total, (u_char*)env_ptr);

}将调用
static inline int nand_read(nand_info_t *info, ulong ofs, ulong *len, u_char *buf)
{
        return info->read(info, ofs, *len, (size_t *)len, buf);
}
如果这个调用关系我没有搞错的话,
我想知道nand_read(&nand_info, CFG_ENV_OFFSET, &total, (u_char*)env_ptr);
的4个参数如何与info->read(info, ofs, *len, (size_t *)len, buf);
的5个参数发生关联?????
希望大侠能讲详细一点!!!
页: [1]
查看完整版本: uboot1.1.6 中的C 语法问题