VC ++和windows.h中的BYTE typedef

时间:2010-05-19 14:16:59

标签: c++ visual-c++

我正在使用Visual C ++,我正在尝试包含一个使用BYTE的文件(以及DOUBLE,LPCONTEXT ...),默认情况下它不是定义的类型。

如果我包含windows.h,它工作正常,但是windows.h也定义了我不需要的GetClassName。我正在寻找一个替代windows.h include,可以使用VC ++并定义大多数类型,如BYTE,DOUBLE ......

由于

3 个答案:

答案 0 :(得分:3)

我认为windows.h最多声明 GetClassName(),而不是它定义它。像这样的函数声明(并且windows.h会引入更多,更多的函数)并不需要任何费用。

如果您担心它会与您想要使用的函数名称冲突,请考虑将自己的名称放在命名空间中。

答案 1 :(得分:2)

BYTE和LPCONTEXT是Windows API使用的类型和定义的。如果您开发Windows应用程序,请包含windows.h,以便您可以使用Windows API方法和所需类型。

在windows.h中定义的任何您不需要的符号都不会以任何方式影响您的应用程序,它们在编译时会被忽略。

<强> PS: 当然,您可以将这些结构的确切定义从Windows标头复制到您自己的头文件中,但是您没有获得任何收益。恰恰相反。头文件定义所有Windows API调用共享的类型。如果这些类型发生变化,您的应用程序可能会崩溃,因为私有头文件中定义的类型和Windows使用的类型不再匹配。这就是为什么每个需要这些类型的人都只包含windows.h。

答案 2 :(得分:2)

您需要包含windows.h才能获得这些类型。如果您想减少windows.h带来的定义数量,可以在#define WIN32_LEAN_AND_MEAN之前添加windows.h,这将排除很多内容(但不包括所有内容)。请参阅http://support.microsoft.com/kb/166474