Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the "interface" keyword in MSVC?

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?

like image 984
fieldtensor Avatar asked Aug 11 '14 00:08

fieldtensor


1 Answers

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

like image 156
Marco A. Avatar answered Oct 14 '22 10:10

Marco A.