我正在使用Visual C ++,我正在尝试包含一个使用BYTE的文件(以及DOUBLE,LPCONTEXT ...),默认情况下它不是定义的类型。
如果我包含windows.h,它工作正常,但是windows.h也定义了我不需要的GetClassName。我正在寻找一个替代windows.h include,可以使用VC ++并定义大多数类型,如BYTE,DOUBLE ......
由于
答案 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。