PC Lint while (TRUE) против (;;) - PullRequest
       37

PC Lint while (TRUE) против (;;)

5 голосов
/ 23 сентября 2011

Я впервые использую PC Lint. Я «накладывал» свой код, когда PC Lint предупреждает меня о моем while(TRUE).

Вот что он говорит:

716: while (1) ... - была найдена конструкция вида, в то время как (1) ...

Принимая во внимание, что это представляет константу в контексте, ожидающем логическое значение, это может отражать политику программирования, согласно которой бесконечные циклы с префиксом этой конструкции. Следовательно, ему дается отдельный номер и был помещен в информационную категорию. Более обычный форма префикса бесконечного цикла предназначена для (;;).

Я не понял это утверждение. Может ли кто-нибудь помочь мне понять это?

Ответы [ 2 ]

5 голосов
/ 23 сентября 2011

В тексте говорится, что, хотя while(TRUE) (который предварительно обрабатывается в while(1)) является совершенно допустимым бесконечным циклом, более обычной формой написания бесконечного цикла является

for(;;)
{
   ...
} 

, поскольку он не 't вообще не использует никаких значений и поэтому менее подвержен ошибкам.

3 голосов
/ 23 сентября 2011

В нем говорится, что более обычным бесконечным циклом является for(;;), что, я бы сказал, является спорным утверждением, и что он классифицирует эту конструкцию как вывод "информационной категории" - я подозреваю, что если вы использовали for(;;) вместо этого это ушло бы. Я всегда писал это как while(1) и никогда for(;;) сам. Если он делает то, что вы ожидаете, я проигнорирую выводы PC LINT на этом или переключу его, если вы беспокоитесь о том, что кто-то переопределит TRUE, потому что , если кто-то переопределит TRUE ваш цикл не будет ' не работает вообще.

...