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