Стив Саммит. Язык си в вопросах и ответах. Lint.Ответы на вопросы разбиты по темам:
4. Выражения
5. ANSI C
7. Списки аргументов переменной длины.
8. Булевы выражения и переменные.
9. Структуры, перечисления и объединения.
10. Декларации.
13. Lint.
14. Стиль.
15. Операции с плавающей точкой.
16. Интерфейс с операционной системой.
17. Разное (Пребразование Fortran -> C , грамматики для YACC и т.п.)
Lint.
13.1 Вот я написал программу, а она ведет себя странно. Что в ней не так?
О: Попробуйте сначала запустить lint (возможно, с ключами -a, -c, -h, -p). Многие компиляторы С выполняют на самом деле только половину задачи, не сообщая о тех подозрительных местах в тексте программы, которые не препятствуют генерации кода.
13.2 Как мне подавить сообщение «warning: possible pointer alignment problem» («предупреждение: возможна проблема с выравниванием указателя»), которое выдает lint после каждого вызова malloc?
О: Проблема состоит в том, что lint обычно не знает, и нет возможности ему об этом сообщить, что malloc «возвращает указатель на область памяти, которая должным образом выравнена для хранения объекта любого типа». Возможна псевдореализация malloc с помощью #define внутри #ifdef lint, которая удалит это сообщение, но слишком прямолинейное применение #define может подавить и другие осмысленные сообщения о действительно некорректных вызовах. Возможно, будет проще игнорировать эти сообщения, может быть, делать это автоматически с помощью grep -v.
13.3 Где найти ANSI-совместимый lint?
О: Программа, которая называется FlexeLint (в виде исходного текста с удаленными комментариями и переименованными переменными, пригодная для компиляции на «почти любой» системе) может быть заказана по адресу
Gimpel Software 3207 Hogarth Lane Collegeville, PA 19426 USA (+1) 610 584 4261 gimpel@netaxs.com
Lint для System V release 4 ANSI-совместим и может быть получен (вместе с другими C утилитами) от UNIX Support Labs или от дилеров System V.
Другой ANSI-совместимый LINT (способный также выполнять формальную верификацию высокого уровня) называется LCLint и доступен через ftp: larch.lcs.mit.edu://pub/Larch/lclint/ .
Ничего страшного, если программы lint нет. Многие современные компиляторы почти столь же эфффективны в выявлении ошибок и подозрительных мест, как и lint.