为什么 Intellisense 不显示 VC++ "interface" 宏的定义?

Why doesn't Intellisense show VC++ definition of "interface" macro?

这是我正在使用的一段代码:

interface ClassFactory : public IClassFactory
{
    // *** IUnknown methods ***

    STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR *ppv);
    STDMETHOD_(ULONG, AddRef)();
    STDMETHOD_(ULONG, Release)();

    // *** IClassFactory methods ***

    STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR *ppvObject);
    STDMETHOD(LockServer)(BOOL fLock);

public:
    ClassFactory();

private:
    ULONG RefCount;
};

VS2015 颜色代码关键字如 "public" 和 "private" 为蓝色,用户定义类型如 "ULONG" 和 "IClassFactory" 为蓝绿色,宏如 "STDMETHOD" 和紫色的 "REFIID"(好吧,也许是 "eggplant")。对于用户定义的类型和宏,我可以让 Intellisense 通过简单地将光标悬停在符号上来显示定义。因此,如果我将光标放在紫色符号 "FAR," 上,我会在屏幕上的灰色框中看到 #define FAR far

符号 "interface" 颜色编码为紫色,就像一个宏。此外,我必须包含 Unknwn.h 才能使用它(将 Unknwn.h 排除在外会导致其颜色编码为蓝色,并标有 "identifier 'interface' is undefined" 错误)。向下钻取 Unknwn.h(然后进入 objbase.h,然后进一步进入 combaseapi.h)我发现这些行:

#define __STRUCT__ struct
#define interface __STRUCT__

所以,很明显 "interface" 是一个宏,就像 FAR 一样。然而,即使 VS2015 对它进行颜色编码,当我将光标悬停在它上面时,我也没有像我预期的那样得到一个显示 #define interface __STRUCT__ 的灰色框。此外,如果我右键单击它,包含 "Peek Definition" 和其他条目的弹出菜单将让我看到在上下文中定义宏的行,这些条目将显示为灰色。

为什么 Intellisense 不显示接口宏的定义?

(顺便说一句,我认为在上面的代码片段中使用 "interface" 是一种糟糕的技术,因为它声明的 "interface" 包含一个成员变量;它可能应该是 "class" 相反。我只是对 IDE 的行为感到困惑,希望有人能给我解释一下。)

Microsoft 通过电子邮件与我确认这是一个错误,但它已在 Visual Studio 2015 Update 2 中得到修复。我今天下载并安装了 Update 3,事实上,错误消失了。 Intellisense 现在显示 Unknwn.h 中声明的宏 "interface" 的定义,如果您单击右键菜单上的 "goto definition" 将打开该文件。