【发布时间】:2013-05-09 21:30:14
【问题描述】:
在main.c 中,它调用initialize() 和startup()。在init.c 中的每个函数中,它会循环遍历包含已注册函数的表并调用它们:
void startup ( void ) {
struct startup_fn *startup_fn;
if ( started )
return;
/* Call registered startup functions */
for_each_table_entry ( startup_fn, STARTUP_FNS ) {
if ( startup_fn->startup )
startup_fn->startup();
}
started = 1;
}
根据评论,我不知道注册的功能在哪里。
#define STARTUP_FNS __table ( struct startup_fn, "startup_fns" )
#define __table( type, name ) ( type, name )
__table 是我可以调查的结束。评论说它“声明一个链接器表”。但是它如何获得功能呢?
table.h里还有更多,比如__table_entry、table_start……这个表是哪里来的?它的条目在哪里?这是什么意思:
#define table_start( table ) __table_entries ( table, 00 )
00 在这里是什么意思?
请帮忙。我真的很想明白。谢谢。
【问题讨论】: