uboot.lds中有一段脚本:
...
.u_boot_cmd : {
__u_boot_cmd_start = .;
*(.u_boot_cmd)
__u_boot_cmd_end = .;
}
....
该段的作用是将uboot的所有与命令相关的struct都放在一起?
.h中定义:
struct cmd_tbl_s {....
};
typedef struct cmd_tbl_s cmd_tbl_t;
extern cmd_tbl_t __u_boot_cmd_start;
extern cmd_tbl_t __u_boot_cmd_end;
然后在board.c中有代码:
for (cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++) {
...
}
cmdtp即为结构体指针,为什么是 &__u_boot_cmd_start 而不是 __u_boot_cmd_start
?
望大神们指教,感激不尽!!!
------解决方案--------------------
这个加不加&号是给c编译器使用的,没有这个&不能表示地址。你前面提到的你的培训班中的小技巧,我估计是使用的那个cmd_tbl_t的定义有差别,会不会是 typedef xxx *cmd_tbl_t的形式,这样一来你定义一个新的变量那么就是指针了。