Pourquoi #define assert(expression) ((void)0)
, plutôt que #define assert(expression)
est utilisé en mode de sortie? (À proprement parler, quand NDEBUG)Pourquoi assert est défini comme (void) 0?
J'ai entendu qu'il ya des raisons, mais je l'ai oublié.
Il y a habituellement un ',' plus tard, et si rien ne assert est devenu, que seul reste ';' pourrait déclencher un avertissement. –
Ce dernier autoriserait 'assert (true)' (sans point-virgule), alors que le premier ne le ferait pas. –
@ MarcGlisse vous devriez le poster comme une réponse. Pour l'instant, votre commentaire est la seule déclaration qui répond réellement à la question de l'affiche. – axiac