我编译了以下代码,在我的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 Settingsmkumar@hubinoDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'char\' 155 26 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'const\' 156 1 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__nullterminated\' 156 33 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'*\' token 157 26 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'const\' 158 26 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'const\' 164 38 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'const\' 165 38 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'const\' 166 38 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] expected \'=\', \',\', \';\', \'asm\' or \'__attribute__\' before \'const\' 173 10 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'STRSAFE_PCNZCH\' 174 10 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__in_range\' 175 15 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__deref_out_range\' 179 10 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'STRSAFE_PCNZWCH\' 180 10 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__in_range\' 181 15 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__deref_out_range\' 193 5 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__deref_in_opt_out\' 194 17 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__deref_out_range\' 200 5 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__deref_in_opt_out\' 201 17 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'__deref_out_range\' 207 30 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.h [Error] unknown type name \'STRSAFE_PCNZCH\' 213 30 C:Documents and SettingsmkumarDesktopDEVCTEST-install-Driver-DifxTO-DOstrsafe.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++
以上就是c/c++开发分享DEV-C ++中的编译器错误相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。