2012-03-14 8 views

risposta

15

Clean C è un termine coniato nel Harbison & Steele libro (C: A Reference Manual, Prentice Hall). Si dice che un programma sia scritto in Clean C se può essere compilato da un compilatore C standard e da un compilatore C++ standard; e la sua esecuzione non produrrebbe un comportamento osservabile diverso dai due compilatori (i problemi di ottimizzazione sono irrilevanti).

+0

@ pst "è un termine coniato nel libro Harbison & Steele" Non è questo il riferimento? – Mysticial

+0

@pst Non riesco a trovare il numero di pagina nella mia copia H & S, ma un numero di persone si riferisce a questo termine e H & S in comp.lang.c – ouah

+1

Provate nella sezione 1.1.5 _Standard C++ _ (p.5 nel 5 ° edizione di C: ARM). – ldav1s

2

Uno che mi sembra il più ovvio è che in C++, devi trasmettere il valore di ritorno di malloc. Anche le strutture vengono automaticamente digitate in C++.

Utilizzare sempre un compilatore C per codice C, non C++. C++ non è perfettamente compatibile con C.

pochi altri differenze possono essere:

  • In C, dichiara func void(); dichiara una funzione che non ha specificato quali sono i suoi argomenti, mentre in C++, void func(); è equivalente a C void func (void) ', senza argomenti;
  • I prototipi sono richiesti in C++, mentre generalmente è solo un avvertimento in C;
  • Il tipo di costanti di caratteri (come 'a') è int in C e char in C++;
  • Il tipo di stringhe letterali è char [] in C e const char [] in C++;
  • Alcuni nomi di variabili legittime in C, come classe, sono parole chiave riservate in C++.
+0

vedere anche http://david.tribble.com/text/ cdiffs.htm – Christoph

+0

Cosa significa che 'void func()' non ha specificato i suoi argomenti? Come può essere usato praticamente? –

+0

@VictorZamanian La convenzione di chiamata consente di passare un numero errato di argomenti in C senza arresti anomali. Ovviamente, se il chiamato fa qualcosa di male con i tuoi argomenti "non corretti", è un comportamento indefinito. Stai semplicemente dichiarando nullo il reso. C ha permesso qualche disagio estremo come quello. Penso che tutti gli argomenti che si passano a qualcosa dichiarato come tale si suppone debbano essere convertiti in int. Non sono sicuro e non mi interessa davvero trivia del genere. Dichiaro i miei parametri. :) – doug65536

Problemi correlati