Chaîne de caractères de longueur variable en PL/1
Citation:
Envoyé par
chrtophe
Là je connais pas, si tu peux développer ...
Je te donne l'adresse d'un document pdf : http://web.philo.ulg.ac.be/lasla/wp-...tementauto.pdf
Tu télécharges le document pdf pour pouvoir le manipuler sous Acrobat et tu vas à à partir de la page numérotée 100 (en fait 102/133 dans le pdf). Tu sauras tout sur les chaînes de caractères de longueur variable en PL/1.
A propos du #define et du switch/case.
Citation:
Envoyé par
destroyedlolo
Salut,
"Oblige", pourquoi "Oblige". Quel je sache, rien ne t'impose d'envoyer des directives aux pré-processeurs.
A nouveau, très utile pour faire de la compilation conditionnelle et avoir binaire nettoyé de tout code de debug pour la prod (quand on sait bien l'utilisé et qu'on fait de vrais tes d'intégrations).
Je te parle de ce qu'on doit faire dans le compilateur pour traiter du #define, pas de ce que le programmeur C peut faire ou non.
Donc je répète que, dans le compilateur, on est obligé de traiter tous les cas et que ça impose des aller/retours entre la phase d'analyse lexicale et la phase d'analyse syntaxique ce qui est contraire à une architecture "propre" d'un compilateur.
Je ne nie pas que c'est très utile pour la compilation conditionnelle et que la notion de pré-processeur existait bien avant le langage C (en PL/1, par exemple).
Par ailleurs, concernant le switch/case, le s compilateurs C ne les transforment pas en if/else imbriqués mais construisent en interne un tableau avec des branchements directs sur les bon cas en construisant des pointeurs sur le code des différents cas ce qui est bien plus efficace que de dérouler, à l'exécution, les conditions de if/else imbriqués (c'est d'ailleurs comme cela qu'il faut programmer des automates à pile si on veut être efficace)
Pour la factorisation des cas semblables il aurait suffit d'inventer la syntaxe qui existe en ADA (liste des cas semblables séparés par des virgules).