【发布时间】:2015-10-31 18:07:24
【问题描述】:
这是一个示例 C++ 代码块。我阅读了 typedef、struct、enum 和 union 的定义,但仍然无法解读。
typedef NTSTATUS (WINAPI * PFN_NTQUERYINFORMATIONFILE)(
IN HANDLE FileHandle,
OUT PIO_STATUS_BLOCK IoStatusBlock,
OUT PVOID FileInformation,
IN ULONG Length,
IN FILE_INFORMATION_CLASS FileInformationClass
);
- NTSTATUS (WINAPI * PFN_NTQUERYINFORMATIONFILE) 是一个函数吗?为什么参数的意思是中间有一个 *?
- IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock.. IN/OUT 是什么意思?
- 为什么没有新别名?
-
我可以声明一个新的别名和一个指针别名吗?在下面的示例中,我会使用 PFILE_NAME_INFORMATION 作为指针名称,否则使用 FILE_NAME_INFORMATION 吗?
typedef struct _FILE_NAME_INFORMATION { ... } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
【问题讨论】:
-
额外的空格,宏,...你有 IDE 吗?
-
首先让我说
_FILE_NAME_INFORMATION是一个保留标识符:你不能合法使用它。其次,IN和OUT不是 C++ 关键字,所以我猜测它们只是#defines 什么都没有,仅用作注释。 -
在你的最后一个问题 4. 中,你真的是在问
structs 还是这只是一个类比,而你实际上是在问函数指针?