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
try
…catch
…finally
.
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.