La función itoa
no es estándar, probablemente por el hecho de que no existe una definición coherente. Diferentes proveedores de compiladores y bibliotecas han introducido versiones sutilmente diferentes, posiblemente como una invención para servir como complemento de atoi
.
Si alguna función no estándar es ampliamente proporcionada por los distribuidores, el trabajo de la norma es codificar que: básicamente agregar una descripción de la función existente a la norma. Esto es posible si la función tiene convenciones y comportamiento de argumento más o menos consistente.
Dado que ya existen varios sabores de itoa
, dicha función no se puede agregar a ISO C. Cualquier comportamiento que se describa estaría en desacuerdo con algunas implementaciones.
itoa
ha existido en formas tales como:
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 ofrece en su ejecución C Biblioteca Visual vez bajo el nombre alterado: _itoa
.
no sólo han proporcionado históricamente C implementaciones en los términos de las diferentes definiciones, C programas también proporcionan una función llamada función itoa
por sí mismos, lo cual es otra fuente de posibles enfrentamientos.
Básicamente, el identificador itoa
es "radiactivo" con respecto a la estandarización como un nombre externo o macro. Si tal función está estandarizada, tendrá que tener un nombre diferente.
'atoi' es histórico,' itoa' no lo es. Realmente no deberías usar 'atoi' de todos modos,' strto (u) l (l) 'es lo que deberías usar. Para la otra dirección, 's (n) printf'. –
Como 'itoa' no es una función estándar, ¿puede incluir lo que debe ser el contrato de interfaz para la función' itoa' que desea discutir?(Esto puede responder a su pregunta.) –
@CharlesBailey Tengo curiosidad en general sobre por qué el estándar incluye atoi y no itoa –