bool bDeleted = false;
if (partfile,bDeleted)
partfile->PerformFileCompleteEnd(wParam);
En este caso, la declaración if
evalúa PartFile, bDeleted, pero bDelete siempre es falsa, por lo que la expresión no se puede ejecutar. La pregunta clave es "¿qué es todo eso?". La respuesta probable es que alguien haya querido evitar temporalmente que se ejecute la instrucción partfile->PerformFileCompleteEnd(wParam);
, tal vez porque estaba causando algún problema o si deseaba garantizar que el código posterior informara los errores correctamente si ese paso no se realizaba. Para que recuerden cómo era el código, dejaron la antigua lógica "if (partfile)" allí, pero agregaron una variable bDeleted codificada para documentar que la lógica partfile->Perform...
había sido efectivamente "eliminada" del programa.
Una mejor manera de desactivar temporalmente dicho código es probablemente ...
#if 0
if (partfile)
partfile->PerformFileCompleteEnd(wParam);
#endif
... aunque a veces trato de documentar el razonamiento también ...
#ifndef DONT_BYPASS_FILE_COMPLETE_PROCESSING_DURING_DEBUGGING
if (partfile)
partfile->PerformFileCompleteEnd(wParam);
#endif
... o ...
if (partFile, !"FIXME remove this after debugging")
partfile->PerformFileCompleteEnd(wParam);
La mejor opción depende de su conjunto de herramientas y hábitos existentes (por ejemplo, algunos editores resalte "ARREGLAME" y "TODO" en video inverso por lo que es difícil pasar por alto o gris #if 0 bloques; es posible que tengas ciertas cuerdas que advierte sobre el control de origen; el preprocesador define solo en versiones de depuración frente a versiones de lanzamiento puede evitar la distribución accidental, etc.).
Tal vez esto ayudará a: http://stackoverflow.com/questions/54142/c-comma-operator –
Una posibilidad es que el codificador significó 'if (partfile && bDeleted)', algunos otros lenguajes de programación tienen 'IF a, b' para significar" si ayb " –