Impossible de déclarer la variable du tout avec l’environnement de génération du kit de pilotes Windows

J’ai un pilote sortingvial, comme ceci:

#include  NTSTATUS DriverEntry(__in DRIVER_OBJECT* a, __in UNICODE_STRING* b) { UNREFERENCED_PARAMETER(a); UNREFERENCED_PARAMETER(b); int c; // this fails the build return 0; } 

Un makefile sortingvial

 TARGETNAME=main TARGETTYPE=DRIVER MSC_WARNING_LEVEL=/W4 /WX SOURCES=main.c 

Avec une sortie non sortingval

 C:\Test>pushd %cd% C:\Test>C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1 fre x64 wnet WARNING: x64 Native compiling isn't supported. Using cross comstackrs. Launching OACR monitor C:\WinDDK\7600.16385.1>popd C:\Test>build BUILD: Comstack and Link for AMD64 BUILD: Loading c:\winddk\7600.16385.1\build.dat... BUILD: Computing Include file dependencies: BUILD: Start time: Thu Jan 17 10:57:58 2013 BUILD: Examining c:\test directory for files to comstack. BUILD: Saving c:\winddk\7600.16385.1\build.dat... BUILD: Compiling and Linking c:\test directory Configuring OACR for 'root:amd64fre' -  _NT_TARGET_VERSION SET TO WS03 Compiling - main.c 1>errors in directory c:\test 1>c:\test\main.c(9) : error C2143: syntax error : missing ';' before 'type' Linking Executable - objfre_wnet_amd64\amd64\main.sys 1>link : error LNK1181: cannot open input file 'c:\test\objfre_wnet_amd64\amd64\main.obj' BUILD: Finish time: Thu Jan 17 10:57:58 2013 BUILD: Done 3 files comstackd - 1 Error 1 executable built - 1 Error 

Comment sur Terre peut-il en résulter une error C2143: syntax error : missing ';' before 'type' error C2143: syntax error : missing ';' before 'type' ?

Toutes les déclerations n’échouent pas, il me semble pouvoir déclarer des données globales, mais pas des variables locales.

Le problème est que les compilateurs C de Microsoft ne prennent en charge que le standard C89, qui ne permet pas l’entremêlement des déclarations et du code. Changer en:

 { int c; UNREFERENCED_PARAMETER(a); UNREFERENCED_PARAMETER(b);