bool bDeleted = false;
if (partfile,bDeleted)
partfile->PerformFileCompleteEnd(wParam);
Tutaj oświadczenie if
ocenia partfile, bDeleted, ale bdelete jest zawsze fałszywe, więc wyrażenie nie uruchomić. Kluczowe pytanie brzmi "o co w tym wszystkim chodzi?". Prawdopodobną odpowiedzią jest to, że ktoś tymczasowo chciał uniemożliwić działanie instrukcji partfile->PerformFileCompleteEnd(wParam);
, być może dlatego, że powodował pewien problem lub chciał poprawnie zapewnić późniejsze zgłaszanie błędów w kodzie, jeśli ten krok nie został wykonany. Aby pamiętali, jak kod był kiedyś, zostawili starą logikę "if (partfile)", ale dodali zakodowaną na stałe zmienną bDeleted, aby udowodnić, że logika partfile->Perform...
została "usunięta" z programu.
Lepszym sposobem, aby tymczasowo wyłączyć takiego kodu jest prawdopodobnie ...
#if 0
if (partfile)
partfile->PerformFileCompleteEnd(wParam);
#endif
... chociaż czasami staram się dokumentować rozumowanie też ...
#ifndef DONT_BYPASS_FILE_COMPLETE_PROCESSING_DURING_DEBUGGING
if (partfile)
partfile->PerformFileCompleteEnd(wParam);
#endif
... lub ...
if (partFile, !"FIXME remove this after debugging")
partfile->PerformFileCompleteEnd(wParam);
najlepszy wybór zależy od zestawu narzędzi i istniejących nawyków (np Niektóre edytory podświetlić „FIXME” lub „TODO” w odwróconym filmie wideo, więc trudno go pomijać lub wyszarzać #if 0 bloków; możesz mieć określone ciągi, o których ostrzega twoje sterowanie kontrolą źródła; preprocesor definiuje tylko w debugowaniu, a kompilacje wersji mogą uniemożliwić przypadkową dystrybucję itp.).
Może to pomoże: http://stackoverflow.com/questions/54142/c-comma-operator –
Jedną z możliwości jest że koder miał na myśli 'if (partfile && bDeleted)', niektóre inne języki programowania mają 'IF a, b' oznaczać" jeśli aib " –