ASSERT(pointer);
pointer->x;
Dans ce code, l'ASSERT semble être redondant. Si le pointeur est NULL, pointeur->x échouera de toute façon. Mon argument est-il correct ?
ASSERT(pointer);
pointer->x;
Dans ce code, l'ASSERT semble être redondant. Si le pointeur est NULL, pointeur->x échouera de toute façon. Mon argument est-il correct ?
ASSERT
peut également être utilisé pour vérifier les conditions invalides ou illogiques qui peuvent ne pas provoquer de plantage. Voici un exemple terriblement artificiel :
void cpu_hog(int duration)
{
int start_time = (int) time(NULL);
int end_time = start_time + duration;
ASSERT(end_time > start_time); /* If this fails, "int" is too small. */
while ((int) time(NULL) < end_time)
;
}
Une petite remarque : la plupart des partisans de ASSERT
vous recommande de ne l'utiliser que pour valider les hypothèses que vous faites en écrivant le code (par exemple, un pointeur est non NULL, ou une condition ne peut pas se produire). Il est généralement considéré comme un mauvais idée à utiliser ASSERT
pour piéger les erreurs liées à l'utilisateur ou les exceptions qui sont censées se produire (par exemple, disque plein) parce que (1) ASSERT
n'existe que dans une version de débogage, et (2) même si vous transformez votre code de débogage en code de production, il se plantera au lieu de gérer la condition de manière élégante.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.