2011-03-04 10 views

Respuesta

15

EDIT: Bien, tenemos algunas personas que tal vez no leyeron la pregunta con cuidado, o hicieron suposiciones sobre lo que significaba la pregunta o cómo se interpretarían las respuestas.

Estoy respondiendo a la siguiente pregunta aquí:

pero lo que fue la razón para optar por utilizar el prefijo "C"?


Destacar que es originalmente del lenguaje C, supongo.

+1

@Platinum Azure ¿Tiene alguna fuente para confirmarlo? –

+2

La versión ".h" también tiene sus orígenes en el lenguaje C, para mí eso no tiene mucho sentido. –

+0

No he encontrado ninguna fuente, pero creo que @FredOverflow es perfecto. En cuanto a los choques en los nombres de archivo, eso es bastante significativo porque un compilador de C++ busca archivos en ciertos lugares con ciertos sufijos, y sería desagradable si el archivo incorrecto terminara siendo incluido debido a una colisión de nombre. En cuanto a la versión '.h', es solo porque los diseñadores decidieron usar el sufijo' .h' para indicar que es un encabezado. Sin embargo, es más una convención que nada. –

4

Los encabezados que terminan con .h son los encabezados C originales. Los que tienen el prefijo c (y ninguna extensión) son las versiones de encabezado C incorporadas por el estándar C++ (el prefijo "te recuerda" eso). En teoría, todo dentro de ellos debe estar dentro del espacio de nombres std.

+0

¡Sé la diferencia, gracias! Pero, ¿por qué el uso de un prefijo "c" para indicar las versiones incorporadas por el estándar de C++? –

+2

@ Fábio - Supongo que es solo una manera de decirte ... Oye, estás programando en C++, pero este es un encabezado original de C. Sin embargo, ** ahora ** está de acuerdo con C++ y todo está dentro del espacio de nombres ** std **. –

9

La calificación del nombre es necesaria para eliminar la ambigüedad entre las versiones de los espacios de nombres de dominio estándar calificados de los encabezados de biblioteca C y los encabezados de biblioteca C++ con el mismo nombre. Por ejemplo: "string.h" contiene funciones originales de cadena C, "cstring" contiene funciones de serie C calificadas como std y "string" contiene clases de cadenas C++. Sin la calificación del nombre, los dos últimos nombres chocarían.

+0

+1: ¡finalmente una respuesta correcta! – rubenvb

+0

@rubenvb Explicó el motivo para usar un prefijo, pregunté por qué eligieron el prefijo "c". Solo Platinum Azure intentó responder mi pregunta. –

+0

@ Fábio: excepto que su respuesta es, al menos, incompleta ya que omite todo el punto. – rubenvb

Cuestiones relacionadas