DEV-C ++中的编译器错误

我编译了以下代码,在我的C代码中使用#include 声明,我在DEV-C ++中遇到以下编译器错误。 我想编译器中应该有一些选项来解决这个问题。 有人可以帮助解决这个问题。

以下是我的示例代码,它取自MSDN网站:

 #include  #include  void ErrorExit(LPTSTR lpszFunction) { // Retrieve the system error message for the last-error code LPVOID lpMsgBuf; LPVOID lpDisplayBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); // Display the error message and exit the process lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, (lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 40) * sizeof(TCHAR)); StringCchPrintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR), TEXT("%s failed with error %d: %s"), lpszFunction, dw, lpMsgBuf); MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK); LocalFree(lpMsgBuf); LocalFree(lpDisplayBuf); ExitProcess(dw); } void main() { // Generate an error if(!GetProcessId(NULL)) ErrorExit(TEXT("GetProcessId")); } 

大量错误中的错误示例。

 154 26 C:\Documents and Settings\mkumar@hubino\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] expected '=', ',', ';', 'asm' or '__attribute__' before 'char' 155 26 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] expected '=', ',', ';', 'asm' or '__attribute__' before 'const' 156 1 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__nullterminated' 156 33 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 157 26 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] expected '=', ',', ';', 'asm' or '__attribute__' before 'const' 158 26 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] expected '=', ',', ';', 'asm' or '__attribute__' before 'const' 164 38 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] expected '=', ',', ';', 'asm' or '__attribute__' before 'const' 165 38 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] expected '=', ',', ';', 'asm' or '__attribute__' before 'const' 166 38 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] expected '=', ',', ';', 'asm' or '__attribute__' before 'const' 173 10 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name 'STRSAFE_PCNZCH' 174 10 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__in_range' 175 15 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__deref_out_range' 179 10 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name 'STRSAFE_PCNZWCH' 180 10 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__in_range' 181 15 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__deref_out_range' 193 5 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__deref_in_opt_out' 194 17 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__deref_out_range' 200 5 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__deref_in_opt_out' 201 17 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name '__deref_out_range' 207 30 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name 'STRSAFE_PCNZCH' 213 30 C:\Documents and Settings\mkumar\Desktop\DEVC\TEST-install-Driver-Difx\TO-DO\strsafe.h [Error] unknown type name 'STRSAFE_LPCSTR' continues....... 

我收到上述错误的strsafe.h文件的一部分:

 // // These typedefs are used in places where the string is guaranteed to // be null terminated. // typedef __nullterminated char* STRSAFE_LPSTR; typedef __nullterminated const char* STRSAFE_LPCSTR; typedef __nullterminated wchar_t* STRSAFE_LPWSTR; typedef __nullterminated const wchar_t* STRSAFE_LPCWSTR; typedef __nullterminated const wchar_t UNALIGNED* STRSAFE_LPCUWSTR; // // These typedefs are used in places where the string is NOT guaranteed to // be null terminated. // typedef __possibly_notnullterminated const char* STRSAFE_PCNZCH; typedef __possibly_notnullterminated const wchar_t* STRSAFE_PCNZWCH; typedef __possibly_notnullterminated const wchar_t UNALIGNED* STRSAFE_PCUNZWCH; // prototypes for the worker functions STRSAFEWORKERAPI StringLengthWorkerA( __in STRSAFE_PCNZCH psz, __in __in_range(<=, STRSAFE_MAX_CCH) size_t cchMax, __out_opt __deref_out_range(<, cchMax) size_t* pcchLength); STRSAFEWORKERAPI StringLengthWorkerW( __in STRSAFE_PCNZWCH psz, __in __in_range(<=, STRSAFE_MAX_CCH) size_t cchMax, __out_opt __deref_out_range(<, cchMax) size_t* pcchLength); #ifdef ALIGNMENT_MACHINE STRSAFEWORKERAPI UnalignedStringLengthWorkerW( __in STRSAFE_PCUNZWCH psz, __in __in_range(<=, STRSAFE_MAX_CCH) size_t cchMax, __out_opt __deref_out_range(<, cchMax) size_t* pcchLength); #endif // ALIGNMENT_MACHINE STRSAFEWORKERAPI StringExValidateSrcA( __deref_in_opt_out STRSAFE_LPCSTR* ppszSrc, __inout_opt __deref_out_range(<, cchMax) size_t* pcchToRead, __in const size_t cchMax, __in DWORD dwFlags); 

__nullterminated,__ out_opt,__ in,__ in_opt和其他此类单词是Microsoft特定的关键字。 当你使用gcc时,你可以将它们定义为空的宏

 #define __in #define __deref_out_range(A,B) ... and so on 

在包含之前插入这些定义。

或者评论建议避免使用

编辑:

MinGW(来自http://equation.com的 x64版本)只需一个简单的命令就可以安静地编译上面的代码(即使使用strsafe.h ):

 gcc -c Test.cpp -o Test.exe -lstdc++