最近研究qemu,初始化的时候有类似的代码:
#define module_init(function, type) \
static void __attribute__((constructor)) do_qemu_init_ ## function(void) { \
register_module_init(function, type); \
}
do_qemu_init_** 想必是模块的初始化了,但是却没有调用 do_qemu_init的地方,奇了怪了,为什么呢?
仔细看看这个函数,修饰符中包含了 __attribute__((constructor)),估计就是这个家伙干的!
写代码测试之:
#include <stdio.h>
#include <stdlib.h>