Apendice C: Resumen de Modificaciones
Desde la publicacion de la primera edicion de este libro, la definicion del lenguaje C ha sufrido modificaciones. Casi todas fueron extensiones al lenguaje original, y fueron disenadas cuidadosamente para permanecer compatibles con la practica existente; algunas repararon ambiguedades de la descripcion original, y otras representan modificaciones de la practica existente. Muchas de las nuevas caracteristicas se anunciaron en los documentos que acompanan a los compiladores disponibles de AT&T, y posteriormente se han adoptado por otros proveedores de compiladores del lenguaje C. Recientemente, el comite ANSI incorporo mas de esos cambios estandarizando el lenguaje, y tambien introdujo otras modificaciones significativas. Su reporte fue en parte anticipado por algunos compiladores comerciales aun antes de la publicacion del estandar formal.
Este apendice resume las diferencias entre el lenguaje definido por la primera edicion de este libro, y lo esperado como la definicion del estandar final. Trata solamente al lenguaje en si, no a su entorno ni a su biblioteca; aunque esas son partes importantes del estandar, hay poco con que compararlas, puesto que en la primera edicion no se intento definirlas.
- El preprocesamiento esta definido mas cuidadosamente en el Estandar que en la primera edicion, y esta extendido: esta explicitamete basado en tokens (simbolos); existen nuevos operadores para la concatenacion de tokens (# # ) y creacion de cadenas (#); hay nuevas lineas de control como #elif y #pragm a; esta explicitamente permitida la redeclaracion de macros por la misma secuencia de tokens; ya no se reemplazan los parametros que estan dentro de cadenas. La separacion de lineas por \ esta permitida en cualquier lugar, no solo en definiciones de cadenas y macros. Vease §A12.
- El significado minimo el mas pequeno de todos los identificadores internos se incremento a 31 caracteres; permitido para identificadores con liga externo permanece en 6 letras, sin importar sin son mayusculas o minusculas (muchas implantaciones proporcionan mas).
- Las secuencias trigraficas introducidas por ?? permiten la
representacion de caracteres que no se encuentran en algunos conjuntos.
Estan definidos los escapes para
#
\
'[']
{
}
¡
\
. Vease §A12.1. Observese que la introduccion de trigrafos puede cambiar el significado
de cadenas que contengan la secuencia ??
.
- Se introdujeron nuevas palabras reservadas (void, const, volatile, signed. enum). La palabra reservada entry, que nunca se puso en uso, fue retirada.
- Se definen nuevas secuencias de escape para uso dentro de constantes
de caracter y cadenas literales. El efecto de seguir
\
con un caracter que no sea parte de una secuenciade escape aprobada esta indefinido. Vease §A2.5.2.