Spójrz na ten kod:Puste "wydanie" ASSERT makr awarie programu?
#include <cassert>
#ifdef DEBUG
#define ASSERT(expr) assert(expr)
#else
#define ASSERT(expr)
#endif /* DEBUG */
Program będzie działał tylko wtedy, gdy mam DEBUG
zdefiniowane, inaczej będzie powiesić i zakończyć bez rezultatów. Używam MinGW w Eclipse Indigo CDT. Rada jest doceniana!
Prawdopodobnie jest to drugi najbardziej częstą przyczyną (po optymalizacji) różnic między kompilacjami debugowania i wydania. –
Dzięki za odpowiedź, jedno pytanie. Czy dobrą praktyką byłoby po prostu '#define ASSERT (expr) (expr)' (jak wspomniała Kerrek SB) o braku debugowania i po prostu nie martwić się efektami ubocznymi od tego? Mam przeczucie, że mój kod będzie bardziej czytelny. – AutoBotAM
@AutoBotAM: Jeśli zamiast tego nazwiesz 'ASSERT'' VERIFY', to na pewno. Ale nie zmieniaj definicji 'ASSERT', ludzie wiedzą i oczekują, że nie oceni ona wyrażenia na kompilacjach' NDEBUG'. –