У меня есть приложение VC ++, написанное с использованием Visual Studio 2008. В целях отладки значения тайм-аута компилируются по-разному в зависимости от типа сборки (Debug или Release). Пример кода ниже типичен для того, как я пытаюсь это сделать.
#ifdef _DEBUG
if ( (dwObjectWaitState = ::WaitForSingleObject( m_hValidMsgRxdEvent, INFINITE )) != WAIT_OBJECT_0 )
#else
if ( (dwObjectWaitState = ::WaitForSingleObject( m_hValidMsgRxdEvent, BAS_THREE_SEC_TIMEOUT )) != WAIT_OBJECT_0 )
#endif
{
/* ... */
}
В конфигурации отладки _DEBUG
определено в определениях препроцессора. Конфигурация выпуска не имеет этого. Для каждой соответствующей конфигурации ожидаемая линия выделена серым цветом (предположительно, чтобы указать, что другая строка будет скомпилирована).
Однако во время выполнения тайм-ауты сборки выпуска остаются INFINITE
. Когда я пытаюсь установить точку останова для обоих операторов if
и пытаюсь запустить код Release, точка останова в первом операторе if
остается, тогда как другая точка останова перемещается на первую строку внутри скобок.
Что дает? Как сделать так, чтобы этот параметр компиляции работал? Должен ли я использовать что-то еще?