句柄其实就是一个Void*的指针,为什么要声明为Void*?


为什么句柄要声明为Void*?为什么不是窗口句柄就有一个窗口句柄类型,文件句柄就有文件句柄类型?这样不是更易读也更好用?

c windows

liccc 12 years, 8 months ago

主要有3方面原因
1、void 类型的指针不能执行++或者+n的操作 2、不能直接取空指针指向的内容 3、转换为其他类型指针时无需类型转换,例如 void * pVoid; int * pInt = pVoid;这样保证了即使为void 类型后面使用也很方面
综上几点原因,可以使系统很好的保护句柄不被改变和破坏,又可以保证句柄作为指针时使用方便

掉在地上的番茄 answered 12 years, 8 months ago

Your Answer