2010-02-01 24 views
0

J'écris C89 sur MSFT Visual Studio 2010 Beta. Comment puis-je faire une assertion, similaire au mot-clé assert de Java? Je pense que je dois définir une macro, mais je ne sais pas comment. (Il semble que c'est quelque chose qui a été fait avant, donc je préfère utiliser ce que d'essayer de rouler mon propre.)Affirmations dans C89?

est ici une supposition:

int assert(int truth_value) { 
    // crash the program with an appropriate error message 
} 

Répondre

1

C89 a <assert.h>, qui contient la macro vous cherchez.

#include <assert.h> 
assert(expression); 

De la documentation:

Les assert() macro teste l'expression donnée d' et si elle est fausse, le processus d'appel est terminé. Un message de diagnostic est écrit à stderr et la fonction abort (3) est appelée, ce qui termine effectivement le programme.

Si l'expression est vraie, la macro assert() ne fait rien.

+0

Yup. La chose à retenir est que 'assert()' est généralement désactivé pour les exécutions de production, il est donc important de s'assurer que * expression * n'a d'autre effet que de retourner une valeur vraie ou fausse. –

+1

Oui, vous pouvez désactiver 'assert()' en définissant 'NDEBUG'. –