Хотя миграция старый проект C++ от Visual Studio 6 до Visual Studio 2012, мы столкнулись с нечетными предупреждений внутри стандартных заголовков платформы Microsoft:VS2012 C++ предупреждение C4005: «__useHeader»: макро переопределение
- предупреждение C4005: «__useHeader»: макро переопределение
- предупреждение C4005: «__on_failure»: макро переопределение
поиск в Интернете можно найти только несколько других людей, работающих в этой ошибки. В некоторых случаях именно люди пытались использовать VS2012 для компиляции устаревшего кода DirectX, чего я не делаю. В других случаях именно люди пытались использовать VS2012 для установки на Windows XP (используя новую опцию из Update 1), которую я делаю.
На вопрос DirectX было отправлено предупреждение о том, что вы будете компилировать с устаревшей версией DirectX (pre-Win8), и вам просто нужно будет с ней жить ,
На вопрос Windows XP не ответил. Другие люди просто сказали, что они не могут воспроизвести проблему.
Я воспроизвел его и нашел причину, которую я пишу здесь, чтобы помочь любому, кто сталкивается с этим.
Этот макрос добавлен при переходе с VS2005 на VS2012 по умолчанию и не был полезен в моем случае. Однажды я сменил каталог SDK include от v7.1A на '$ (WindowsSDK_IncludePath)', который является версией 8.0, все предупреждения пошли. – alex555
У меня есть% (PreprocessorDefinitions), и я до сих пор получаю предупреждения.Решение с $ (WindowsSDK_IncludePath) работало для меня. –
Это также может происходить, когда отдельные исходные файлы имеют определения препроцессора, которые переопределяют определения проекта. –