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, как и ожидалось, это не имеет никакого эффекта. Нет причин делать что-либо из этого.