C 'TRUE;' утверждение - PullRequest
       1

C 'TRUE;' утверждение

1 голос
/ 19 октября 2010

Я столкнулся с кодом, написанным на C, который выглядит следующим образом:

if (file == NULL)
     TRUE; /* <-- What does that mean? */

Я думаю, что это другой способ сказать:

if (file == NULL);

Но я что-то упустил,и есть ли причина сделать это первым способом, а не вторым?

ОБНОВЛЕНИЕ:

При некотором копании ИСТИНА определяется следующим образом:

#define TRUE !0

Ответы [ 3 ]

7 голосов
/ 19 октября 2010

Просто предположение - я подозреваю, что в какой-то момент в истории кто-то хотел установить точку останова на этой ИСТИННОЙ линии.

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

Однако этот бесполезный код не должен был превращать его в систему управления версиями.

3 голосов
/ 19 октября 2010

Я думаю, что причина писать так, чтобы избавиться от надоедливых предупреждений компилятора.

Это верно для MSVC, что второе утверждение заставит компилятор предупреждать о empty controlled statement или что-то в этом роде.Однако TRUE; является обычным допустимым непустым утверждением.

2 голосов
/ 19 октября 2010

Это выглядит как утверждение без эффекта, но что такое ИСТИНА (Это не стандарт)? Если это просто 1, как и ожидалось, это не имеет никакого эффекта. Нет причин делать что-либо из этого.

...