C-- est 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 (64 bits en version 64 bits). Vous n’aurez donc pas à vous casser la tête pour savoir combien de place allouer à chaque variable: ce sera toujours 4 octets (8 octets en version 64 bits).
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 qu’une exception à ce principe: l’arithmétique sur les
pointeurs 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.