0

Windows ドライバー プロジェクトを からVS 2005に移行していますVS 2012。多くのマクロ再定義の警告がVS 2012like で生成されます -

....

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.hVS 2005 に同梱されていたものは、マクロなどを持っていないため、問題なくコンパイルされてい__format_stringました。ただし、sal.hVS 2012 に同梱されている にはこれらのマクロが含まれています。したがって、ドライバと VS 2012sal.hの標準との間に矛盾があります。sal.h

#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
....

VS 2012 で使用できるように、#ifこれらのマクロに関するディレクティブはありません。この問題の回避策はありますか?sal.h#undef

ありがとう。

4

2 に答える 2

2

ドライバー コードに VS 標準ヘッダーを含めないでください。これらはカーネルで使用するためのものではありません。WDK ヘッダーのみを使用します。

于 2012-10-22T13:25:14.993 に答える
2

あなたが何を望んでいるかを正しく理解していれば、あなたがする必要があるのは追加するだけです

#ifdef __format_string 
#undef __format_string
#endif

再定義の前。

于 2012-09-20T16:33:31.297 に答える