这是Linux内核代码中的任何一种macros吗?

我发现这在Linux内核代码http://gitorious.org/pandroid/kernel-omap/blobs/5ed7607d45b300a37dd13ad1c79adea56f6687ce/arch/arm/mach-omap2/board-omap4panda.c

MACHINE_START(OMAP4_PANDA, "OMAP4430 Panda Board") .phys_io = 0x48000000, .io_pg_offst = ((0xfa000000) >> 18) & 0xfffc, .boot_params = 0x80000100, .map_io = omap_panda_map_io, .init_irq = omap_panda_init_irq, .init_machine = omap_panda_init, .timer = &omap_timer, MACHINE_END 

我没有得到这是什么..? 这是一个macros或结构或什么..?

定义说

 /* * Set of macros to define architecture features. This is built into * a table by the linker. */ #define MACHINE_START(_type,_name) \ static const struct machine_desc __mach_desc_##_type \ __used \ __attribute__((__section__(".arch.info.init"))) = { \ .nr = MACH_TYPE_##_type, \ .name = _name, #define MACHINE_END \ }; #endif 

但我不明白它是如何工作的?

Solutions Collecting From Web of "这是Linux内核代码中的任何一种macros吗?"

指定的结构初始化是一个GNU GCC扩展,如果你习惯ANSI C编译器,那看起来有点奇怪。 这与一个雄心勃勃的宏观相结合使得它在许多方面看起来像一门外语。 扩展的源代码是:

 static const struct machine_desc __mach_desc_OMAP4_PANDA __used __attribute__((__section__(".arch.info.init"))) = { .nr = MACH_TYPE_OMAP4_PANDA, .name = "OMAP4430 Panda Board", .phys_io = 0x48000000, .io_pg_offst = ((0xfa000000) >> 18) & 0xfffc, .boot_params = 0x80000100, .map_io = omap_panda_map_io, .init_irq = omap_panda_init_irq, .init_machine = omap_panda_init, .timer = &omap_timer, }; 

MACHINE_START

在arch / arm / include / asm / mach / arch.h第67行中定义为预处理器宏

MACHINE_END

定义为预处理器宏: arch / arm / include / asm / mach / arch.h,第74行

我使用这个网站的Linux内核引用http://lxr.free-electrons.com/

这是初始化结构对象的指定初始值设定项。