我试图理解以下最糟糕的 C 代码行(来自 uboot 项目)的含义:
rc = ((ulong (*)(bd_t *, int, char *[]))addr) (bd, --argc, &argv[1]);
这是什么?函数调用? 它可以更具可读性吗?
预先感谢您的帮助!
最佳答案
是的,这是一个函数调用。
它将 addr
中的值转换为接受 (bd_t *, int, char *[])
作为参数的函数指针并返回一个 ulong
,并调用函数。它可以被糖化成:
typedef ulong (*bd_function)(bd_t *bd, int argc, char *argv[]);
bd_function bdfunc = (bd_function) addr;
rc = bdfunc(bd, --argc, &argv[1]);
如果这种情况只发生一次,引入 typedef
可能有点矫枉过正,但我觉得能够单独查看函数指针的类型会很有帮助。
关于C - 这行是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058065/