OVH Cloud OVH Cloud

assert

4 réponses
Avatar
Barraud Aurélien
la méthode assert (mode debug) permet d'arreter l'execution d'un prog si la
condition est false :
ex : assert (a<b) est equivalent à if(a<b) exit(-1);

Je voulais savoir un truc.
Comme en mode release les assert sont virés, à quoi servent-ils reéllement ?

4 réponses

Avatar
Laurent Deniau
Barraud Aurélien wrote:
la méthode assert (mode debug) permet d'arreter l'execution d'un prog si la
condition est false :
ex : assert (a<b) est equivalent à if(a<b) exit(-1);

Je voulais savoir un truc.
Comme en mode release les assert sont virés, à quoi servent-ils reéllement ?


un assert devrait etre utilise uniquement pour detecter des erreurs de
programmation ou pour etre laisses dans le code final (un peu violent).

si a<b doit etre respecte dans ta fonction et a et b peuvent ne pas respecter ce
test de temps en temps (valeurs lues dans un fichier ou demandees a
l'utilisateur) dans le code final, ce n'est pas un assert qu'il faut utiliser
mais une code de gestion d'erreur, assert etant le plus brutal.

typiquement, je n'utilise jamais assert pour verifier le respect d'un interval.
par contre je l'utilise systematiquement pour verifier qu'un pointeur n'est pas
NULL la ou il ne doit pas l'etre.

a+, ld.

--
[ Laurent Deniau -- Scientific Computing & Data Analysis ]
[ CERN -- European Center for Nuclear Research ]
[ - http://cern.ch/Laurent.Deniau ]
[ -- One becomes old when dreams become regrets -- ]

Avatar
AG
Barraud Aurélien wrote:
la méthode assert (mode debug) permet d'arreter l'execution d'un prog si la
condition est false :
ex : assert (a<b) est equivalent à if(a<b) exit(-1);

Je voulais savoir un truc.
Comme en mode release les assert sont virés, à quoi servent-ils reéllement ?


Quand tu écris ton code, tu écris avec tous les asserts qui te
permettent de faire en sorte d'être sur qu'il fonctionne comme tu
l'entends. Notamment, si le programme ne se comporte pas comme tu le
pensais, l'assert te permet de trouver immédiatement ou se trouve l'erreur.

Une fois ton programme débuggé, tu le compile en mode release (sans les
assert), ce qui lui évite tous les tests a priori inutiles.
Assert sert donc à te faire gagner du temps au débuggage.

AG.

Avatar
Barraud Aurélien
merci c clair maintenant !

"AG" a écrit dans le message de news:
Barraud Aurélien wrote:
la méthode assert (mode debug) permet d'arreter l'execution d'un prog si
la


condition est false :
ex : assert (a<b) est equivalent à if(a<b) exit(-1);

Je voulais savoir un truc.
Comme en mode release les assert sont virés, à quoi servent-ils
reéllement ?



Quand tu écris ton code, tu écris avec tous les asserts qui te
permettent de faire en sorte d'être sur qu'il fonctionne comme tu
l'entends. Notamment, si le programme ne se comporte pas comme tu le
pensais, l'assert te permet de trouver immédiatement ou se trouve
l'erreur.


Une fois ton programme débuggé, tu le compile en mode release (sans les
assert), ce qui lui évite tous les tests a priori inutiles.
Assert sert donc à te faire gagner du temps au débuggage.

AG.




Avatar
Barraud Aurélien
merci
"Laurent Deniau" a écrit dans le message de news:

Barraud Aurélien wrote:
la méthode assert (mode debug) permet d'arreter l'execution d'un prog si
la


condition est false :
ex : assert (a<b) est equivalent à if(a<b) exit(-1);

Je voulais savoir un truc.
Comme en mode release les assert sont virés, à quoi servent-ils
reéllement ?



un assert devrait etre utilise uniquement pour detecter des erreurs de
programmation ou pour etre laisses dans le code final (un peu violent).

si a<b doit etre respecte dans ta fonction et a et b peuvent ne pas
respecter ce

test de temps en temps (valeurs lues dans un fichier ou demandees a
l'utilisateur) dans le code final, ce n'est pas un assert qu'il faut
utiliser

mais une code de gestion d'erreur, assert etant le plus brutal.

typiquement, je n'utilise jamais assert pour verifier le respect d'un
interval.

par contre je l'utilise systematiquement pour verifier qu'un pointeur
n'est pas

NULL la ou il ne doit pas l'etre.

a+, ld.

--
[ Laurent Deniau -- Scientific Computing & Data Analysis ]
[ CERN -- European Center for Nuclear Research ]
[ - http://cern.ch/Laurent.Deniau ]
[ -- One becomes old when dreams become regrets -- ]