Apostaria mas por el flag hacia el compilador que el #ifndef o el #pragma. Usualmente las directivas al preprocesador tendran efecto si al compilar 1 programa, este #incluye mas de 1 vez el mismo codigo en esa operacion. Pero si estas compilando 2 archivos .cpp, como indicas, y ambos hacen #include, el compilador no tiene manera de saber lo que #incluiste antes y no va a tener efecto el #ifndef o #pragma.
Si el archivo #incluido tiene funciones, como parece ser el caso, a ninguna de las 2 compilaciones le molestara', pero el linker descubrira' esto y reclamara' de la duplicacion de codigo, como lo esta haciendo ahora.
Sugiero eliminar la presencia de funciones en los archivos #incluidos. quedandose solamente con la definicion de tipos y la especificacion de prototipos de funciones, haciendo su implementacion en un archivo .cpp aparte.
|