При переносе старого проекта на С++ с Visual Studio 6 до Visual Studio 2012 мы столкнулись с нечетным набором предупреждений из стандартных стандартных заголовков платформы Microsoft:
- предупреждение C4005: '__useHeader': переопределение макросов
- предупреждение C4005: '__on_failure': переопределение макросов
В онлайн-поиске было обнаружено еще несколько человек, столкнувшихся с этой ошибкой. В некоторых случаях именно люди пытались использовать VS2012 для компиляции устаревшего кода DirectX, чего я не делаю. В других случаях именно люди пытались использовать VS2012 для установки на Windows XP (используя новую опцию из Update 1) - что я делаю.
На вопрос DirectX был дан ответ, что всегда будет предупреждаться о том, что вы компилируете с устаревшей (pre-Win8) версией DirectX, и вам просто нужно будет с ней жить.
На вопрос Windows XP не ответил. Другие люди просто сказали, что они не могут воспроизвести проблему.
Я воспроизвел его и нашел причину, которую я пишу здесь, чтобы помочь любому, кто сталкивается с этим.