Il C-- è un "linguaggio assembly portabile", progettato per semplificare l'implementazione di un compilatore che produce codice macchina di alta qualità: il compilatore genera codice C--, delegando così il lavoro più duro di generazione del codice di basso livello e di ottimizzazione al compilatore C--.
La sintassi del linguaggio è presa in prestito da quella del linguaggio C. Il C-- omette o modifica alcune caratteristiche del C quali le funzioni variadiche, la sintassi dei puntatori e aspetti del sistema dei tipi del C.
Il nome del linguaggio è un gioco di parole a indicare che il C-- è una forma ridotta del C, nello stesso modo in cui il C++ è una versione espansa del C (in C e C++ "--" e "++" sono gli operatori che sottraggono e aggiungono 1).