2012-03-07 13 views
9

Cuando yo desarrollo en C++ en un sistema de archivos que no es sensible a mayúsculas, echo de menos problemas comoSimulación de mayúsculas y minúsculas en un sistema de archivos que no es sensible

#include "File.h" 

si el disco es en realidad file.h.

El problema solo aparece cuando finalmente trato de compilar el código en un sistema de archivos sensible a mayúsculas y minúsculas.

¿Cómo simulo la sensibilidad de mayúsculas y minúsculas en un sistema de archivos (como el valor predeterminado de OSX) que no distingue entre mayúsculas y minúsculas?

Editar: Busco a una solución automatizada, una que puedo correr ahora y en el futuro con "el empuje de un botón".

También parece ser un estilo perfectamente bueno para asignar un nombre riguroso a los archivos en C++ después del nombre exacto de la clase, incluido el caso. Entonces SuperDuperClass aparecería en SuperDuperClass.h. Una solución que requiere miniaturas de nombres de archivo no es adecuada.

+2

¿Necesita simular la distinción entre mayúsculas y minúsculas, o es suficiente para filtrar su fuente y convertir a minúsculas cuando sea necesario? –

+0

Probablemente los mejores descansos de compilación en la discrepancia de mayúsculas y minúsculas. Desea que su código se compile independientemente del sistema de archivos. –

+0

@AndrewWhite Sí, absolutamente. De hecho, estoy buscando una manera de hacer que la construcción se rompa incluso si estoy en un sistema que no distingue entre mayúsculas y minúsculas. – Calaf

Respuesta

5

En Mac OS X, puede usar la Utilidad de Discos para crear un sistema de archivos con distinción entre mayúsculas y minúsculas en una imagen de disco.

case sensitive DMG

+0

Esto es solo un poco radical; ¿No dirías? Está bien, de acuerdo, no necesito borrar mi disco principal y volver a instalar el sistema operativo. Sería suficiente usar una unidad flash USB, pero ¿es realmente tan difícil una solución de software para este problema? – Calaf

+0

Puede usar HFS + CS en una imagen de disco. Se agregó una imagen para ilustrar. :) – duskwuff

+0

¡Pero por supuesto! ¡¡Gracias!! – Calaf

1

Voy a tirar esto por ahí. Solo use los nombres de archivo en minúsculas. Sin embargo, estoy interesado en una respuesta más completa y verificable.

+0

¿Qué no se puede verificar con la respuesta? Puede buscar fácilmente en su árbol fuente los nombres de archivo que no son minúsculas, y también grep sus directivas #include para encontrar instancias como "File.h". – Kaz

+0

Además, desarrolle tal hábito que nunca escriba #include "File.h" por accidente. – Kaz

+0

Ahora he agregado una sección "Editar" para aclarar la pregunta. – Calaf

0

estaría tentado a escribir algo como FileMon (para ejecutar externamente), y acaba de monitorear las llamadas de acceso a archivos desde su IDE al sistema de archivos para comprobar si coincide con el caso. Es poco probable que vaya a obtener una verificación automática del IDE o del sistema operativo (al menos, sin perder el sistema de archivos). Por otro lado, un programa de utilidad independiente que monitorea el acceso al archivo podría detectar fácilmente estos problemas (una vez que haya superado el reto de hacer que el monitoreo funcione).

Mi 2c, de todos modos.

+0

Escribir algo así como FileMon no es un ejercicio breve. En ese caso, también podría escribir un preprocesador de C++ con la funcionalidad añadida, pero aún espero que haya una solución simple, una que, por ejemplo, señale las líneas ofensivas combinando unas pocas utilidades estándar de Unix. – Calaf

Cuestiones relacionadas