Предупреждение о переопределении макросов

Я мигрирую проект драйвера Windows из VS 2005 в VS 2012, Многие предупреждения переопределения макросов генерируются на VS 2012 лайк —

....

1>C:\WINDDK\7600.16385.1\inc\api\sal.h(707): warning C4005: '__format_string' :
macro redefinition
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\sal.h(2860) :
see previous definition of '__format_string'

.....

Это было хорошо с sal.h поставляется с VS 2005, потому что у него нет макроса __format_string и другие. Тем не менее sal.h поставляется с VS 2012 имеет эти макросы. Таким образом, возникают конфликты между водителем sal.h и стандарт sal.h с VS 2012.

#define __format_string                            // With DDK
#define __format_string    _Printf_format_string_  // On VS 2012

Я не могу игнорировать стандартные заголовки, потому что они используются в процессе сборки.

....
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\string.h
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
....

Здесь нет #if директива вокруг этих макросов в sal.h так, чтобы я смог #undef это в VS 2012. Есть ли способ обойти эту проблему?

Благодарю.

0

Решение

Ну, если я правильно понял, что вы хотите, все, что вам нужно сделать, это добавить

#ifdef __format_string
#undef __format_string
#endif

до переопределений.

2

Другие решения

Не следует включать стандартные заголовки VS в код драйвера, они не предназначены для использования ядром. Используйте только заголовки WDK.

2

По вопросам рекламы [email protected]