¿Qué dice la norma?
entre mayúsculas y minúsculas en #include
directivas es controlado por la aplicación (compilador/preprocesador). Esto se explica en virtud de 16.2.2 [cpp.include]:
Una directiva de preprocesamiento de la forma
# include < h-char-sequence> new-line
búsquedas una secuencia de lugares definido por la implementación para una cabecera identificado de forma única por la secuencia especificada entre el <
y >
delimitadores, y provoca la sustitución de esa directiva por todo el contenido del encabezado. Cómo se especifican los lugares o el encabezado identificado está definido por la implementación.
mismo modo, 16.2.3 [cpp.include]:
Una directiva de preprocesamiento de la forma
# include " q-char-sequence" new-line
hace que el reemplazo de la misma Directiva por todo el contenido del archivo de origen identificados por la secuencia especificada entre los delimitadores "
.El archivo fuente nombrado se busca de una manera definida por la implementación. Si esta búsqueda no es compatible, o si la búsqueda falla, la directiva se vuelve a procesar como si se lee
# include < h-char-sequence> new-line
con la secuencia contenida idéntico (incluyendo >
caracteres, si lo hay) de la directiva original.
Una opción natural para una implementación del lenguaje es utilizar la sensibilidad de mayúsculas y minúsculas del sistema de archivos o sistema operativo, pero no hay un requisito estricto para hacerlo (como sugieren todas las otras respuestas).
¿Cuál es la mejor práctica, mantener todos los nombres de archivos/carpetas en minúsculas y hacer lo mismo al incluirlos?
Mejor práctica, como siempre: Mantenga las cosas consistentes. Si está utilizando archivos fuente/encabezado de mayúsculas y minúsculas en su proyecto, siga utilizándolos y replique la carcasa exacta en sus directivas #include
.
En realidad, está más relacionado con el sistema de archivos utilizado más bien que con el sistema operativo. El valor predeterminado es como se define arriba. Pero en Linux hay una gran variedad de sistemas de archivos para elegir, algunos de los cuales no distinguen entre mayúsculas y minúsculas. –
@Martin: Sí, tienes razón. Gracias por la observación precisa. –
¿La sensibilidad de mayúsculas/minúsculas no está especificada por C89/99/++ 11? o dice el estándar que las rutas de búsqueda y los nombres de archivo no distinguen entre mayúsculas y minúsculas? –