Funkcja itoa
nie jest standardem prawdopodobnie dlatego, że nie ma spójnej definicji tego. Różni producenci kompilatorów i bibliotek wprowadzili subtelnie różne jego wersje, prawdopodobnie jako wynalazek, który służy jako uzupełnienie do atoi
.
Jeśli jakaś niestandardowa funkcja jest powszechnie dostarczana przez sprzedawców, standardem jest skodyfikowanie to: zasadniczo dodać opis istniejącej funkcji do standardu. Jest to możliwe, jeśli funkcja ma mniej lub bardziej spójne konwencje i zachowanie argumentów.
Ponieważ wiele smaków z itoa
jest już dostępnych, funkcja taka nie może zostać dodana do ISO C. Jakiekolwiek zachowanie jest sprzeczne z niektórymi implementacjami.
itoa
istnieje w postaciach takich jak:
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 udostępnia je w ich środowisku Visual C Run Time Library pod zmienioną nazwą: _itoa
.
Nie tylko implementacje C historycznie umieszczono je na różnych definicjach, C programy również funkcję o nazwie itoa
funkcji dla siebie, co jest kolejnym źródłem ewentualnych starć.
Zasadniczo, identyfikator itoa
jest "radioaktywny" w odniesieniu do standaryzacji jako nazwa zewnętrzna lub makro. Jeśli taka funkcja jest ustandaryzowana, będzie musiała mieć inną nazwę.
'atoi' jest historyczne,' itoa' nie jest. Nie powinieneś tak naprawdę używać 'atoi' tak,' strto (u) l (l) 'jest tym, czego powinieneś używać. Dla innego kierunku, 's (n) printf'. –
Jako że 'itoa' nie jest funkcją standardową, czy możesz zawrzeć to, co powinien zawierać interfejs dla funkcji' itoa', którą chcesz omówić?(Może to odpowiedzieć na twoje pytanie.) –
@CharlesBailey Jestem po prostu ciekawy, dlaczego standard zawiera atoi a nie itoa –