如何禁用win32"界面"宏?

How to disable win32 'interface' macro?

本文关键字:界面 win32 何禁用      更新时间:2023-10-16

我在这里绝对要疯了。我正在Windows上进行一些C++开发,并且我有一个名为"interface"的命名空间:

namespace gd {
namespace interface {
}} // end namespace

但是,有一个名为"objbase.h"的文件,无论我是否包含"Windows.h"或"Wtypes.h",它都包含在其中包含一个名为"interface"的宏。此宏不允许我使用命名空间名称。Win32 API 中是否有禁用接口宏定义的功能?如果没有,有人能想到一个聪明的解决方法来禁用它,而不需要在我的代码库中进行太多的大规模更改吗?

如果你真的想这样做,你可以#undef interface宏。

我建议,相反,不要命名您的命名空间interface,因为interface尽可能接近于保留字,而无需实际成为保留字。使用该命名空间会导致很多混乱。

似乎您还可以定义WIN32_LEAN_AND_MEAN以避免在包含windows.h时拉入objbase.h