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 блоков; у вас могут быть определенные строки, о которых предупреждает ваш контрольный элемент управления версиями; препроцессор определяет только в версиях debug vs release, которые могут предотвратить случайное распространение и т. д.).
Возможно, это поможет: http://stackoverflow.com/questions/54142/c-comma-operator –
Одной из возможностей является что кодер имел в виду 'if (partfile && bDeleted)', некоторые другие языки программирования имеют 'IF a, b' для обозначения« if a и b » –