Previous Up Next

5  Le langage C--

C-- est, si l’on excepte la notion d’exception, un sous-ensemble extrêmement réduit du langage C. Ont été supprimés de C: tous les types struct, union, enum, ainsi que les tableaux, et la plupart des types scalaires. En fait, il ne reste que les types int, char *, et les pointeurs sur les types C-- (récursivement).

L’avantage est que tous ces types tiennent sur 32 bits. Vous n’aurez donc pas à vous casser la tête pour savoir combien de place allouer à chaque variable: ce sera toujours 4 octets.

Ensuite, de nombreuses constructions de C ont été supprimées, mais pas suffisamment pour ne pas pouvoir compiler des programmes intéressants.

En principe, C-- est un sous-ensemble de C, ce qui signifie que vous pourrez tester mcc en comparant les programmes qu’il produit avec ceux produits par gcc.

Il n’y a que deux exceptions à ce principe. La première est l’ajout à C--, par rapport à C, des exceptions, c’est-à-dire des constructions throw et trycatchfinally. La seconde est l’arithmétique sur les pointeurs, qui a une sémantique différente en C-- et en C. Si vous déclarez int *p et écrivez p++ en C, ceci ajoute sizeof(int), soit 4, à l’adresse p. En C–, ça n’est censé qu’ajouter un. Je doute que vous ayez à considérer ce genre de subtilités, mais qui sait.


Previous Up Next