Стив Саммит. Язык си в вопросах и ответах. Lint.

Стив Саммит. Язык си в вопросах и ответах. Lint.Ответы на вопросы разбиты по темам:

 

1. Нулевые указатели

2. Указатели и массивы.

3. Выделение памяти

4. Выражения

5. ANSI C

6. Препроцессор С.

7. Списки аргументов переменной длины.

8. Булевы выражения и переменные.

9. Структуры, перечисления и объединения.

10. Декларации.

11. Cтандартный ввод/вывод.

12. Библиотечные функции.

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.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *