2010-10-13 26 views
1

Ceci est facile. Générer un avertissement à propos de la suppression du code inaccessible. On peut supposer que le compilateur était assez intelligent pour comprendre qu'il n'est exécuté qu'une fois et que le type sera toujours nul. Je n'écrirais normalement pas ce code, mais dans ce cas, je ne veux tout simplement pas l'avis de suppression de code dans ma sortie. Comment puis-je fermer SBCL à propos de cet avertissement en particulier? En guise de note, je n'ai pas non plus été capable de trouver la bonne syntaxe pour dire à sbcl de mettre la sécurité à 0 pour que je puisse déborder d'un entier (éducationnellement) ... Peut-être lié?Common Lisp: suppression du code inaccessible

Merci, Conrad

+0

Vous avez déjà essayé '(declare (optimize (safety 0)))' pour la partie autorisant le débordement de votre question? –

Répondre

2

Wrap tout compile le code dans un gestionnaire-bind avec un gestionnaire pour sb-ext:compiler-note qui est manipulé avec muffle-warning. Voir aussi http://www.sbcl.org/manual/#Controlling-Verbosity

SBCL a l'arithmétique modulaire, de sorte que vous pouvez obtenir arithmétique très rapide en déclarant les types de variables et d'envelopper les opérations dans (logand mask (+ x y)), où le masque est #xFFFF ou #xFFFFFFFF ou autre. Voir aussi http://www.sbcl.org/manual/#Modular-arithmetic