C - 这行是什么意思?

标签 c coding-style embedded

我试图理解以下最糟糕的 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/

相关文章:

linux - 在后台运行进程会降低其权限吗?

linux - 如何在 Linux 中避免共享 IRQ 竞争

c - 为什么 char *str;被宣布为越界

c++ - 为什么 round() 和 ceil() 不返回整数?

c - C进程在fork()之后打印两次,即使它在父进程内部并且我刷新了stdout

java - Allman 风格的匿名类

asp.net - ASP.NET控件的命名准则是什么?

c - 在 C 中将用户输入存储在数组中并将其打印回用户

python - Python编码风格中的空格

C - 无法访问地址处的内存