bool bDeleted = false;
if (partfile,bDeleted)
partfile->PerformFileCompleteEnd(wParam);
Здесь оператор if
оценивает partfile, bDeleted, но bDelete всегда ложно, поэтому выражение не запускается. Ключевой вопрос «что это такое?». Вероятный ответ: кто-то временно хотел помешать выполнению оператора partfile->PerformFileCompleteEnd(wParam);
, возможно, потому, что он вызывал какую-то проблему, или он хотел, чтобы более поздний код сообщал об ошибках правильно, если этот шаг не был выполнен. Чтобы они помнили, каким был код, они оставили там старую логику «if (partfile)», но добавили жестко закодированную переменную bDeleted, чтобы документировать, что логика partfile->Perform...
была фактически «удалена» из программы.
Возможно, лучший способ временно отключить такой код ...
#if 0
if (partfile)
partfile->PerformFileCompleteEnd(wParam);
#endif
... хотя иногда я тоже пытаюсь документировать обоснование ...
#ifndef DONT_BYPASS_FILE_COMPLETE_PROCESSING_DURING_DEBUGGING
if (partfile)
partfile->PerformFileCompleteEnd(wParam);
#endif
... или ...
if (partFile, !"FIXME remove this after debugging")
partfile->PerformFileCompleteEnd(wParam);
Лучший выбор зависит от вашего набора инструментов и существующих привычек (например, некоторые редакторы выделяют «FIXME» и «TODO» в обратном видео, поэтому трудно пропустить или заштриховать блоки #if 0; у вас могут быть определенные строки вашего источника - контрольная проверка предупреждает о том, что препроцессор определяет только в отладочных или выпускных сборках, может предотвратить случайное распространение и т. д.).