在GCC中处理LPDWORD、LPSTR 我有一个使用LPDWord、DWORD等的C++程序,当我使用GCC编译时,它会引发一个错误。如何在GCC中处理LPDWORD、DWORD、LPBYTE和LPTSTR?

在GCC中处理LPDWORD、LPSTR 我有一个使用LPDWord、DWORD等的C++程序,当我使用GCC编译时,它会引发一个错误。如何在GCC中处理LPDWORD、DWORD、LPBYTE和LPTSTR?,c++,gcc,types,C++,Gcc,Types,如果您在Windows系统上,可以使用 #include <windows.h> #包括 这些数据类型是典型的 如果您在另一个平台上,您可以typedef数据类型,但问题很可能会继续,您将不得不移植大部分代码。所有这些typedef都是Microsoft版本的GCC typedef。如果您的程序中只有其中的一部分,那么可以添加一个头文件,将它们转换为GCC的语义 typedef uint32_t* LPDWORD; typedef uint32_t DWORD; // etc

如果您在Windows系统上,可以使用

#include <windows.h>
#包括
这些数据类型是典型的


如果您在另一个平台上,您可以
typedef
数据类型,但问题很可能会继续,您将不得不移植大部分代码。

所有这些typedef都是Microsoft版本的GCC typedef。如果您的程序中只有其中的一部分,那么可以添加一个头文件,将它们转换为GCC的语义

typedef uint32_t* LPDWORD;
typedef uint32_t DWORD;
// etc
有关Microsoft数据类型的更多信息,请参阅此MSDN页面:


这些是在特定于Windows的头文件Windows.h中定义的类型。如果您的代码使用这些类型,那么它可能也会使用许多特定于Windows的函数,因此无法移植。这并不是说你们不能用GCC编译这样的代码——你们可以用,但这只适用于Windows;typedef无符号字符*LPBYTE实际上这些类型是在windev.h中定义的。包含windows.h会提供类型,但会得到许多不需要的附加声明。@harper如果不调用函数,我不明白为什么需要这些类型。当然,您必须包含适当原型的所有头文件。但是可以随意使用BYTE类型来表示与操作系统或任何特定功能无关的字节。但是Suriyan Suresh只是请求对这些类型的支持。没有发现缺失的功能原型。因此,查看包含定义的文件所需的工作更少。