打印

请教:类似Uboot,LwIP的编程风格,技巧

[复制链接]
2316|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MCUJunior|  楼主 | 2008-9-13 20:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   之前看过ucos,就感觉对编程功力有提高,后来看过LwIP,现在下了个Uboot,感觉和LwIP好像很相似的风格,很多奇怪的地方,不太懂,请各位指教。
   很多地方有类似函数定义中有外部函数声明或者是宏定义之类的地方,这是什么用法?
  void setup_serial_tag (struct tag **tmp)
{
    struct tag *params = *tmp;
    struct tag_serialnr serialnr;
    void get_board_serial(struct tag_serialnr *serialnr);
       
    get_board_serial(&serialnr);
    params->hdr.tag = ATAG_SERIAL;
    params->hdr.size = tag_size (tag_serialnr);
    params->u.serialnr.low = serialnr.low;
    params->u.serialnr.high= serialnr.high;
    params = tag_next (params);
    *tmp = params;
}
上面的代码void get_board_serial(struct tag_serialnr *serialnr);不是个函数调用吧,类似的很多
 void __div0 (void)
{
    extern void hang (void);

    hang();
}
还有这个,感觉他们的编程和我见过的以前那些都不一样,是跟GCC编译器有关还是他们的编程爱好,习惯或者可以这样提高可移植性或者效率?谢了。或者如果这些是为了提高效率,这种技巧的书哪里有?谢了。

相关帖子

沙发
bdwzz| | 2011-9-29 13:16 | 只看该作者
本帖最后由 bdwzz 于 2011-9-29 13:17 编辑

第一段代码中的void get_board_serial(struct tag_serialnr *serialnr);是声名函数,这个函数的具体实现应该就在第一段断码所在文件中给出了,第二段代码表示要引用其他文件中的函数,所以要加上extern表明这个函数是在外部C文件中实现的,hang函数肯定是在别的c文件中实现的。这个是C语言基本语法,不是什么效率不效率的问题,lz应该好好补习一下C哦!

使用特权

评论回复
板凳
ayb_ice| | 2011-9-29 13:29 | 只看该作者
函数声明都不知道吗,只不过不是在文件开头处声明的
就这还看UCOS呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

178

帖子

0

粉丝