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

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

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

Я думаю, что это еще один способ сказать:

if (file == NULL);

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

ОБНОВИТЬ:

Делая некоторое копание, ИСТИНА определяется как таковая:

#define TRUE !0

3 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам