# Pourquoi les symboles protégés en AutoLISP ne sont pas complètement protégés ?

**URL:** https://dessein-tech.com/t/pourquoi-les-symboles-proteges-en-autolisp-ne-sont-pas-completement-proteges/11190
**Category:** AutoLISP
**Tags:** lisp, programmation, expert_elite
**Created:** 2026-08-27T16:28:57Z
**Posts:** 1

## Post 1 by @Patrick — 2026-08-27T16:28:58Z

En AutoLISP, un **symbole protégé** est un identifiant qui appartient au noyau fondamental du langage. L’environnement de développement tente normalement de verrouiller ces symboles pour éviter qu’une modification accidentelle ne fasse planter vos scripts ou les commandes internes d’AutoCAD.

### Quels sont les symboles protégés ?

La liste des symboles protégés englobe tout ce qui est natif au langage :

- **Les valeurs booléennes** : `T` (Vrai) et `nil` (Faux/Vide).

- **Les constantes mathématiques** : comme `pi`.

- **Les opérateurs arithmétiques et logiques** : `+`, `-`, `*`, `/`, `=`, `<`, `>`, `and`, `or`.

- **Les fonctions natives (built-in)** : `setq`, `defun`, `car`, `cdr`, `command`, `entget`, `mapcar`, etc.

Si vous assignez une nouvelle valeur à l’un de ces symboles (par exemple `(setq pi 3)` ou `(setq setq 10)`), vous écrasez la fonction ou la constante d’origine pour toute la session AutoCAD en cours, ce qui corrompt généralement l’exécution de tous les autres scripts LISP.

### Pourquoi l’interprèteur ne vous prévient-il pas ?

Si vous ne recevez aucun message d’erreur lors de l’écrasement d’un symbole protégé, c’est en raison de la configuration actuelle de votre environnement de développement.

Historiquement, le langage LISP a été conçu pour être extrêmement permissif. Il autorise volontairement le développeur à redéfinir des fonctions natives pour créer des comportements sur-mesure (méta-programmation).

Pour concilier cette flexibilité avec la sécurité, AutoCAD intègre un paramètre de gestion des symboles protégés qui comporte 4 niveaux. Si vous n’avez pas d’avertissement, c’est que votre environnement est actuellement réglé sur le niveau **Transparent**.

Voici les 4 comportements configurables de l’interprèteur :

1. **Transparent** : Les symboles protégés sont traités comme n’importe quelle variable locale. La modification est appliquée silencieusement.

2. **Afficher un message (Print message)** : La modification est appliquée, mais AutoLISP affiche un avertissement discret dans la console (ex : `; *U* WARNING: assignment to protected symbol: T`).

3. **Boucle d’interruption (Prompt to enter break loop)** : C’est normalement le mode par défaut dans l’éditeur. Une boîte de dialogue s’ouvre pour vous alerter de l’écrasement, met le code en pause et vous permet d’annuler ou d’entrer en mode débogage.

4. **Erreur (Error)** : La modification est strictement interdite. Le script s’arrête immédiatement en renvoyant une erreur fatale.

### Comment réactiver les avertissements

Si vous utilisez l’éditeur classique Visual LISP intégré à AutoCAD (commande `VLIDE`) :

1. Allez dans le menu **Outils (Tools)** \> **Options de l’environnement (Environment Options)** \> **Options générales (General Options)**.

2. Dans la boîte de dialogue, repérez la section dédiée au comportement des symboles protégés.

3. Changez le paramètre de _Transparent_ vers _Prompt to enter break loop_ (Boucle d’interruption).

_(Note : Si vous développez avec la nouvelle extension AutoLISP pour Visual Studio Code, la détection de ces écrasements repose souvent sur le linter (analyseur de code) de l’éditeur plutôt que sur l’interprèteur en direct de la ligne de commande AutoCAD)._
