Операционная система UNIX. Руководство программиста

       

Неиспользуемые переменные и функции


По мере того, как комплекс программ растет и развивается, необходимые ранее переменные и аргументы функций могут перестать использоваться. Нет ничего необычного в том, что внешние переменные и даже функции целиком станут ненужными, но еще не будут удалены из исходного текста. Этот тип ошибок редко выводит из строя работающие программы, однако является источником неэффективности и затрудняет понимание и модификацию программ. Кроме того, информация о неиспользуемых переменных и функциях может порой способствовать обнаружению ошибок.

lint печатает сообщения о переменных и функциях, определенных, но нигде не используемых, в случае, если не указаны опции -u

или -x, подавляющие подобные сообщения.

Программисты иногда прибегают к приему, заключающемуся в определении функций с интерфейсом, в котором часть аргументов функции является необязательной. Обычно lint печатает сообщение о неиспользуемых аргументах, однако предусмотрена опция -v, подавляющая вывод таких сообщений. Если опция -v указана, сообщения о неиспользуемых аргументах не выдаются, если только такой аргумент не является регистровым. Считается, что в последнем случае имеет место напрасная (хотя и не фатальная) трата машинных ресурсов.

Сообщения о неиспользуемых аргументах можно подавить в пределах одной функции, добавив в исходный текст программы перед началом нужной функции комментарий

/* ARGSUSED */

Комментарий действует так же, как и опция -v, но только в пределах одной функции. Другой комментарий

/* VARARGS */

можно использовать, чтобы подавить сообщения о переменном числе аргументов в вызовах данной функции. Комментарий следует вставить перед определением функции. В некоторых случаях желательно проверить несколько первых аргументов, а остальные аргументы оставить непроверенными. Это можно сделать, включив в комментарий цифры, определяющие число аргументов, требующих проверки. Например, комментарий

/* VARARGS2 */

вызывает проверку двух первых аргументов.

Если lint применить к подмножеству полной сосвокупности файлов, составляющих единую программу, в его сообщениях может быть выражено неудовольствие по поводу якобы неиспользуемых или неопределенных переменных. Такая информация, конечно, скорее сбивает с толку, чем помогает. Функции и переменные, определенные в этих файлах, вполне могут в них не использоваться; и наоборот, могут использоваться функции и переменные, определенные где-то в другом месте. Ложные сообщения подавляет опция -u.



Содержание раздела