Ключевые слова:gcc, (найти похожие документы)
Date: Wed, 11 Dec 2002 12:38:09 +0500
From: Valentin Nechayev <netch@segfault.kiev.ua>
Newsgroups: ftn.ru.unix.prog
Subject: Порядок включения #include в программе на Си
VN>> <sys/types.h> очень желательно включать первым, потом прочие <sys/*>,
VN>> потом остальные.
VN>> Остальное не хочу читать, прочитаешь все FAQ - подправишь чего-то -
VN>> тогда и приходи.
PY> Читаю FAQ, к которому ты меня отослал и вижу нечто противоречащее твоим словам.
PY> Порядок #include'ов вовсе не такой, какой ты предлагаешь. Кому верить?
Во многих системах это без разницы.
А вот старое BSD'шное свойство, хвосты которого сохраняются до сих пор - что
1) sys/types.h или sys/param.h надо включать первым
2) sys/types.h надо включать для ряда заголовков, которые сами его
не включают принципиально (например, согласно манам так для sys/socket.h),
перед ними
3) netinet/in.h надо включать явно перед arpa/inet.h, resolv.h и рядом других
поэтому есть некоторые правила хорошего тона, чтобы работало и на системах
со странностями, по порядку включения заголовков:
первыми - sys/types.h, sys/param.h
далее - machine/*, ufs/* и прочие специализированные системные
далее - netinet/*
далее - arpa/*
далее - зависимые от юникса libc'шные (resolv.h, err.h, unistd.h)
далее - общие для всего Си libc'шные (stdio.h, stdlib.h)