VS2012 C ++ warning C4005: '__useHeader': redefinición de macros

Al migrar un antiguo proyecto de C ++ de Visual Studio 6 a Visual Studio 2012, nos encontramos con un extraño conjunto de advertencias dentro de los encabezados de la plataforma estándar de Microsoft:

advertencia C4005: '__useHeader': redefinición de macrosadvertencia C4005: '__on_failure': redefinición de macro

Una búsqueda en línea solo encontró algunas otras personas que se encontraban en este error. En algunos casos, fueron personas que intentaron usar VS2012 para compilar código de DirectX heredado, lo que no estoy haciendo. En otros casos, fueron personas que intentaron usar VS2012 para apuntar a Windows XP (usando la nueva opción de la Actualización 1), lo que estoy haciendo.

Se respondió a la pregunta de DirectX de que la advertencia siempre estará allí para decirte que estás compilando con una versión desactualizada (anterior a Win8) de DirectX, y solo tendrás que vivir con ella.

La pregunta de Windows XP no fue respondida. Otras personas simplemente dijeron que no podían reproducir el problema.

Lo reproduje y encontré la causa, que estoy escribiendo aquí para ayudar a cualquiera que se encuentre con esto.

Respuestas a la pregunta(10)

Su respuesta a la pregunta