What is the “interface” keyword in MSVC?

2019-01-26 06:13发布

问题:

I'm looking through the Windows 8.1 SDK and in UnknownBase.h I'm seeing things like

typedef interface IUnknown IUnknown;

I've never seen this interface keyword before. Note that this is very definitely a .h header, processed by cl.exe. It's not IDL file, and it's not processed by midl.exe.

I found this online: http://msdn.microsoft.com/en-us/library/50h7kwtb.aspx

But __interface is not the same as interface

Can anyone clue me in here?

回答1:

Microsoft has some compiler-specific extensions like the one you linked but interface shouldn't be a native C++ compiler-specific keyword but rather a define which substitutes something (in BaseTyps.h it used to be defined as follows)

# define interface  struct

Link here

If you want to verify this do a grep for such a definition and you should find something similar.


References: http://social.msdn.microsoft.com/forums/vstudio/en-US/06bf1dea-1d20-4ec3-b9a1-3d673d7fcd8d/what-is-the-interface-keyword-in-native-c