La funzione itoa
non è standard probabilmente per la ragione è che non esiste una definizione coerente di esso. Diversi produttori di compilatori e librerie hanno introdotto versioni leggermente diverse di esso, possibilmente come un'invenzione che funge da complemento allo atoi
.
Se alcune funzioni non standard sono ampiamente fornite dai fornitori, il lavoro dello standard è codifica: in pratica si aggiunge una descrizione della funzione esistente allo standard. Questo è possibile se la funzione ha convenzioni e comportamenti di argomento più o meno coerenti.
Poiché più aromi di itoa
sono già disponibili, tale funzione non può essere aggiunta in ISO C. Qualsiasi comportamento descritto potrebbe essere in contrasto con alcune implementazioni.
itoa
è esistito in forme come:
void itoa(int n, char *s); /* Given in _The C Programming Language_, 1st ed. (K&R1) */
void itoa(int input, void (*subr)(char)); /* Ancient Unix library */
void itoa(int n, char *buf, int radix);
char *itoa(int in, char *buf, int radix);
Microsoft fornisce nel loro Visual C Run Time libreria sotto il nome alterato: _itoa
.
Non solo hanno C implementazioni storicamente disponibile sotto diverse definizioni, C programmi forniscono anche una funzione denominata itoa
funzione per se stessi, che è un'altra fonte di possibili scontri.
In linea di principio, l'identificatore itoa
è "radioattivo" per quanto riguarda la standardizzazione come nome o macro esterna. Se tale funzione è standardizzata, dovrà essere sotto un nome diverso.
'atoi' è storico,' itoa' non lo è. Non dovresti comunque usare 'atoi',' strto (u) l (l) 'è quello che dovresti usare. Per l'altra direzione, 's (n) printf'. –
Come 'itoa' non è una funzione standard puoi includere quale dovrebbe essere il contratto di interfaccia per la funzione' itoa' che vuoi discutere?(Ciò potrebbe rispondere alla tua domanda) –
@CharlesBailey Sono solo curioso in generale sul perché lo standard includesse atoi e non itoa –