#include <stdio.h>
struct job_table_t {
void(*init)();
void(*job)();
};
void init_1() {
}
void job_1() {
}
struct job_table_t job1_item = { init_1, job_1 };
void init_2() {
}
void job_2() {
}
struct job_table_t job2_item = { init_2, job_2 };
int main()
{
int i;
struct job_table_t *job_table[] = { &job1_item, &job2_item };
for (i = 0; i < sizeof(job_table) / sizeof(job_table[0]); i++)
job_table[i]->init();
for (i = 0; i < sizeof(job_table) / sizeof(job_table[0]); i++)
job_table[i]->job();
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3Qgam9iX3RhYmxlX3QgewoJdm9pZCgqaW5pdCkoKTsKCXZvaWQoKmpvYikoKTsKfTsKCnZvaWQgaW5pdF8xKCkgewoJcHJpbnRmKCJpbml0IGpvYjFcbiIpOwp9Cgp2b2lkIGpvYl8xKCkgewoJcHJpbnRmKCJqb2IxXG4iKTsKfQoKc3RydWN0IGpvYl90YWJsZV90IGpvYjFfaXRlbSA9IHsgaW5pdF8xLCBqb2JfMSB9OwoKdm9pZCBpbml0XzIoKSB7CglwcmludGYoImluaXQgam9iMlxuIik7Cn0KCnZvaWQgam9iXzIoKSB7CglwcmludGYoImpvYjJcbiIpOwp9CgpzdHJ1Y3Qgam9iX3RhYmxlX3Qgam9iMl9pdGVtID0geyBpbml0XzIsIGpvYl8yIH07CgppbnQgbWFpbigpCnsKCWludCBpOwoJc3RydWN0IGpvYl90YWJsZV90ICpqb2JfdGFibGVbXSA9IHsgJmpvYjFfaXRlbSwgJmpvYjJfaXRlbSB9OwoKCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yoam9iX3RhYmxlKSAvIHNpemVvZihqb2JfdGFibGVbMF0pOyBpKyspCgkJam9iX3RhYmxlW2ldLT5pbml0KCk7CgoJZm9yIChpID0gMDsgaSA8IHNpemVvZihqb2JfdGFibGUpIC8gc2l6ZW9mKGpvYl90YWJsZVswXSk7IGkrKykKCQlqb2JfdGFibGVbaV0tPmpvYigpOwp9