rc = ((ulong (*)(int, char *[]))addr) (--argc, &argv[1]); 这句什么意思?

发布于 2022-10-15 08:36:23 字数 1493 浏览 28 评论 0

  1. /* common/cmd_boot.c  */
  2. int do_go (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
  3. {
  4.        ulong addr, rc;
  5.        int     rcode = 0;
  6.        if (argc < 2) {
  7.               printf ("Usage:\n%s\n", cmdtp->usage);
  8.               return 1;
  9.        }[b][/b]
  10.        addr = simple_strtoul(argv[1], NULL, 16);
  11.        printf ("## Starting application at 0x%08lX ...\n", addr);
  12.        /*
  13.         * pass address parameter as argv[0] (aka command name),
  14.         * and all remaining args
  15.         */
  16.   [b]     rc = ((ulong (*)(int, char *[]))addr) (--argc, &argv[1]);[/b]
  17.        if (rc != 0) rcode = 1;
  18.        printf ("## Application terminated, rc = 0x%lX\n", rc);
  19.        return rcode;
  20. }

复制代码rc = ((ulong (*)(int, char *[]))addr) (--argc, &argv[1]);
帮忙解释下这句话每部分什么意思吧

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

公布 2022-10-22 08:36:23

回复 1# bsknight

((ulong (*)(int, char *[]))addr)
是一个类型转换运算
转换addr的值 得到(ulong (*)(int, char *[])) 类型的数据
(ulong (*)(int, char *[])) 是一个指针类型,指针指向参数类型为(int, char *[])返回值类型为ulong的函数
其余的就不必再进一步解释了吧

来日方长 2022-10-22 08:36:23

回复  bsknight

((ulong (*)(int, char *[]))addr)
是一个类型转换运算
转换addr的值 得到(ulong  ...
KBTiller 发表于 2011-04-25 21:30

    给楼主推荐C陷阱与缺陷,C专家编程,C与指针,C语言深度解剖等。

   当然,还有一本千万记得,二楼那个《狂人C:程序员入门必备》。

怪我入戏太深 2022-10-22 08:36:23

回复 3# cokeboL

    呵呵。多谢

§对你不离不弃 2022-10-22 08:36:23

本帖最后由 bsknight 于 2011-04-26 00:39 编辑

回复 3# cokeboL

恩。。知道了 谢谢~

难理解 2022-10-22 08:36:23

回复 2# KBTiller

    明白了  感谢~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文