psi*_*lia 11 c embedded coding-style
我试图了解以下最糟糕的C代码(来自uboot项目)的含义:
rc = ((ulong (*)(bd_t *, int, char *[]))addr) (bd, --argc, &argv[1]);
Run Code Online (Sandbox Code Playgroud)
它是什么?一个函数调用?它更具可读性吗?
在此先感谢您的帮助!
unw*_*ind 34
是的,这是一个函数调用.
它将值转换addr为函数指针,该函数指针接受(bd_t *, int, char *[])作为参数并返回a ulong,并调用该函数.可以加入到:
typedef ulong (*bd_function)(bd_t *bd, int argc, char *argv[]);
bd_function bdfunc = (bd_function) addr;
rc = bdfunc(bd, --argc, &argv[1]);
Run Code Online (Sandbox Code Playgroud)
这可能是过度的,介绍一个typedef如果只发生一次,但我觉得能够分别查看函数指针的类型有很大帮助.
Mik*_*ler 12
它转换addr为一个函数指针,它接受(bd_t *, int, char *[])作为参数并返回一个long,然后用参数调用它(bd, --argc, &argv[1]).
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |