6Fermer8
SallyLe 27/04/2009 à 19:54
un mot encore sur le bsr -> bra : ça ne s'appelle pas un appel "non récursif", ça s'appelle récursion terminale (tail-recursion en anglais), ça peut t'aider de savoir ça si tu cherches dans la doc ^^

edit : ah non j'ai mal compris de quoi tu parlais... je pensais au cas où l'appel de func2 est la dernière instruction dans func1 (donc ça ne sert à rien de revenir à func1), c'est ça un appel terminal (et en fait récursion terminale stricto sensu c'est quand func2 = func1, la fonction se rappelle elle-même, éventuellement plein de fois, mais sans encombrer la pile inutilement).

Là si tu veux juste dire que ta fonction func2 ne termine jamais il faut la déclarer avec "attribute __noreturn__" et normalement l'optimiseur se débrouille avec cette info happy