我在这里绝对疯了。我正在Windows上进行一些C ++开发,我有一个名为'interface'的命名空间:
namespace gd {
namespace interface {
}} // end namespace
但是,无论是否包含“Windows.h”或“Wtypes.h”(包含名为“interface”的宏),都会包含一个名为“objbase.h”的文件。这个宏不允许我使用命名空间名称。 Win32 API中是否有一项功能可以禁用接口宏的定义?如果没有,有人可以想出一个聪明的解决方法来禁用它,而不需要在我的代码库中进行太多的大规模更改吗?
答案 0 :(得分:9)
如果您真的想这样做,可以#undef
interface
宏。
我建议不要命名你的命名空间interface
,因为interface
尽可能接近保留字而不是实际上是保留字。使用该命名空间会引起很大的困惑。
答案 1 :(得分:0)
您似乎也可以定义WIN32_LEAN_AND_MEAN
,以避免在objbase.h
包含时windows.h
被拉入。