Use a variable before it's declaration
Bjørn Mork
bjorn at mork.no
Thu Sep 10 04:43:15 EDT 2015
Rock Lee <rocklee_104 at outlook.com> writes:
>> Rock Lee <rocklee_104 at outlook.com> writes:
>>
>>> Hi, all:
>>> Here is a snippet of linux-v3.4 which drives me crazy.
>>> Because init_task hasn't been declared yet when init_thread_union is
>>> initializing. Why is there no compiling error? Any hint would be helpful.
>>>
>>> union thread_union init_thread_union __init_task_data =
>>>
>>> { INIT_THREAD_INFO(init_task) };
>>>
>>>
>>>
>>> /*
>>>
>>> * Initial task structure.
>>>
>>> *
>>>
>>> * All other task structs will be allocated on slabs in fork.c
>>>
>>> */
>>>
>>> struct task_struct init_task = INIT_TASK(init_task);
>>
>>
>> Because init_task is declared "extern" in linux/sched.h
>>
>>
>> Bjørn
>
> I do something like that:
>
> extern int b;
> int a = b + 10;
> int b = 20;
>
> int main(void)
> {
> return 0;
> }
>
> No doubt, compiling error.
Sure. That's a completely different issue. But this works:
extern int b;
int *a = &b;
int b = 20;
int main(void)
{
return 0;
}
and that's what the code you refer do does.
Bjørn
More information about the Kernelnewbies
mailing list