2015-10-19 11 views
-1

Я новичок в C, и я понимаю, что вы определяете функцию, используя этот форматдве переменные при определении функции

return_type function_name(args) 
{ 
    ... body ... 
} 

Но я вижу этот код из ядра: https://github.com/torvalds/linux/blob/master/kernel/time/tick-broadcast.c#L995L1005

где функция определение выглядит следующим образом:

void __init tick_broadcast_init(void) 
{ 
    ... body ... 
} 

похоже, есть две переменные, __init и tick_broadcast_init. Кто-нибудь знает, что происходит?

+1

Между типом возврата и именем функции могут быть атрибуты, специфичные для компилятора (такие как директивы, определяющие раздел исполняемого файла, соглашение о вызове и прочее). Это относится к '__init' (фактически макрос, который расширяется до нескольких из этих атрибутов). –

ответ

2

__init и tick_broadcast_init не являются переменными.

__init - это макрос, см. here для получения дополнительных пояснений.

tick_broadcast_init - ваше имя функции.

Ваш тип возврата void означает «ничего», чтобы в действительности не было данных.

Смежные вопросы