L'ultima volta che ho controllato, dicendo che si sta codificando in ANSI C è stato uguale a dire "questo è un codice compatibile C99 con nient'altro in esso". Ora con C11 e C++ 11, questa distinzione rimane ancora? Ha ancora un qualche significato?"ANSI C" o "ANSI C++" significa ancora oggi?
risposta
Storicamente "ANSI C" è stato utilizzato per indicare "C standard", cioè C89, per contrasto con "K & R C" e le diverse varianti pre standard inventati da compilatore scrittori. Ecco perché il 2 ° Ed. di "The C Programming Language" ha un grande timbro rosso "ANSI C" sulla copertina.
Quindi per un periodo di tempo "ISO C" era usato per indicare "il nuovo standard C", cioè C99, in contrasto con "ANSI C".
Questo è stato sempre un utilizzo confuso, dal momento che sia ISO che ANSI hanno ratificato sia C89 che C99. L'ISO ha ratificato il primo come C90 e lo ha pubblicato con alcune modifiche di layout dalla versione ANSI ma presumibilmente lo stesso contenuto sostanziale. Quindi "ANSI C" era sempre uno standard ISO e "ISO C" era sempre uno standard ANSI. L'unica differenza era quale organismo supervisionava il processo di standardizzazione.
In seguito a questo utilizzo (e probabilmente incoraggiandolo a continuare), il flag in GCC è equivalente a -std=c90
. In quel contesto in realtà significa "C90, più alcune estensioni GNU che non sono in conflitto con lo standard".
Non sono a conoscenza di "ANSI C" riferito a C99, ma ciò non significa che non sia stato utilizzato per significare ciò.
Non credo che usare il termine "ANSI C" abbia aiutato nessuno negli ultimi 10 anni. ANSI ha ratificato C11, ma non sarebbe stato utile iniziare a dire "Aha! Bene in quel caso, ANSI C improvvisamente significa ora C11!". Possiamo certamente dire che C11 è l'attuale standard ANSI C, ma tuttavia il termine "ANSI C" non può essere usato con alcuna ragionevole aspettativa che le persone capiscano chiaramente che si tratta di C11.
Da dove diavolo scoprite tutto questo? : | – varevarao
grazie, quindi il meglio è non usare più queste parole se ho capito bene, è solo qualcosa che può avere un significato diverso e può solo generare rumore nella comunicazione. – user1849534
Sia ISO C11 che ISO C++ 11 sono stati ratificati come nuovi standard ANSI C e C++.
Per esempio, sulla mia copia ANSI C11 è scritto:
Adottato da INCITS (International Committee for Information Technology Standards) come standard nazionale americano. Data di ANSI Soddisfazione: 5/23/2012
beh, quindi sostanzialmente ANSI = ISO? – user1849534
No. ANSI partecipa al processo di standardizzazione ISO. –
@ user1849534 C11 è stato approvato come nuovo standard ISO C a dicembre 2011 e ANSI lo approva a maggio 2012. ISO e ANSI sono due organizzazioni diverse con obiettivi diversi. – ouah
Dal Attualmente 3 diverse revisioni dello standard C e "due e mezzo" del C++ uno sono ampiamente utilizzati, direi che tale terminologia oggi ha meno senso che mai.
- In realtà, in un dato momento c'è un solo standard "corrente" C (C++), l'ultimo, in quanto sostituisce le precedenti versioni. Quello che sto dicendo è che tutte queste versioni precedenti sono ancora molto rilevanti (spesso più dell'ultima versione).
Gli standard C e C++ sono standard certificati ISO. –
@AlokSave ok, ma ANSI è anche un'altra organizzazione ... – user1849534
Sì, sono organizzazioni diverse, ma il processo di standardizzazione è integrato così essenzialmente la versione standard ISO è approvata anche da ANSI. –