3

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

namespace gd {
namespace interface {

}} // end namespace

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

4

2 回答 2

9

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

相反,我建议不要命名您的 namespace interface,因为interface它尽可能接近保留字,而实际上不是保留字。使用该命名空间会引起很大的混乱。

于 2012-08-07T21:34:00.193 回答
0

看来您还可以定义WIN32_LEAN_AND_MEAN以避免objbase.h在包含windows.h.

于 2014-04-11T12:55:18.557 回答