为什么unknwn.h中需要三个前向声明?

时间:2012-11-17 03:15:43

标签: c++ winapi

我正在使用JNAerator来解析windows API头文件,以便我可以从JVM引用它们。但是我对C / C ++的熟悉程度和其他语言不太一样,但我需要先了解这些头文件才能正确解析它们。

我特别关注Unkwn.h,它基本上包含

#include "rpc.h"
#include "rpcndr.h"

#ifndef COM_NO_WINDOWS_H
  #include "windows.h"
  #include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/


//Some forward declarations
typedef interface IUnknown IUnknown;
typedef interface AsyncIUnknown AsyncIUnknown;
typedef interface IClassFactory IClassFactory;

#include "wtypes.h"

//followed by the full declarations for the interfaces IUnkown, AsyncIUnkown and IClassFactory and their methods, but no actual implementations of course. 

如果wtypes.h引用了类型(IUnkown,AsynIUnkown或IClassFactory),我认为需要这些正向定义,但我找不到wtypes.h中对这些类型的引用或wtypes.h的其他头文件。引用。那么为什么需要前瞻声明(或者我错过了什么)?

1 个答案:

答案 0 :(得分:0)

这些不是前瞻性声明。这些是类型定义,它们定义接口数据类型。这当然是Microsoft的扩展。定义的作用是确保IUnknown(例如)引用该名称的接口。