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

       

Поток управления


lint стремится выявлять недостижимые фрагменты программы. Он выдает сообщения об операторах без меток, следующих непосредственно за операторами goto, break, continue и return. lint пытается выявлять бесконечные циклы (частные случаи - циклы с заголовками while(1) и for(;;)) и трактует следующие за ними операторы как недостижимые. lint также выдает сообщения о циклах, в которые нельзя попасть через заголовок. В корректных программах могут быть такие циклы, однако подобный стиль считается плохим. Для подавления сообщений о недостижимых фрагментах программы служит опция -b.

lint не обладает информацей, достаточной для того, чтобы определить, какие из вызываемых функций никогда не возвращают управление. Так, вызов exit() может стать причиной недостижимости некоторого фрагмента, чего lint, однако, не обнаружит. Наиболее серьезные последствия этого связаны с опредлением возвращаемых функцией значений (см. пункт Значения функций). Если некоторый фрагмент в программе мыслится как недостижимый, причем lint'у это непонятно, в соответствующее место программы можно вставить комментарий

/* NOTREACHED */

который будет информировать lint о том, что данный фрагмент недостижим (без выдачи диагностического сообщения).

Программы, сгенерированные при помощи yacc'а и, в особенности, lex'а, могут содержать сотни недостижимых операторов break, но пользы от подобных сообщений немного. Обычно с такими операторами ничего поделать нельзя, и сообщения загромождали бы выдачу lint'а. Рекомендуется при работе с подобными исходными текстами вызывать lint с опцией -b.



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