当我在 COM 中开发时,我总是看到 (void**) 类型转换如下。
QueryInterface(/* [in] */ REFIID riid,/* [out] */ void** ppInterface)
它的确切含义是什么?
恕我直言,它告诉编译器不要强制类型验证,因为 ppInterface 指向的类型在编译时客户端代码不知道。
谢谢~~~
更新 1
我是这样理解的:
void* p 暗示 AnyType* p
void ** pp 暗示 指向 AnyType*
的指针更新 2
如果 void**pp 表示“指向 void* 的指针”,那么编译器在看到它时会进行哪些检查?
最佳答案
void **
是指向 void *
的指针。这可用于传递将用作输出参数的 void *
变量的地址 - 例如:
void alloc_two(int n, void **a, void **b)
{
*a = malloc(n * 100);
*b = malloc(n * 200);
}
/* ... */
void *x;
void *y;
alloc_two(10, &x, &y);
关于c# - void** 的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3500018/