typedef void far *LPVOID 的具體定義


首先這里的far,在32位系統已經廢除不用了。它是C/C++語言在16位系統中用以標明指針是個遠指針的修飾符。

遠指針是說指針所指向的地址已經超出了64K(2的十六次方),所以需要使用DS加偏移量的方法來尋址,而不能直接尋址。其反義的修飾符是near。

舉例:

   int far *fptr;      
      fptr=(int far*)0xb0000000; 

16位PC機的存儲器地址是由段地址和偏移地址組合而成,每一段不能超過64k字節地址,因而同一個段內的地址存取,用偏移地址就可以實現,因段地址寄存器所存的段地址是不變的。當用指針時,只16位就夠了,這一類就是near指針。當要在另一個段內取數據,就要跨越段,即要指明存取段的段地址和偏移地址,這時段地址寄存器所存段地址要改變,在使用指針指向另一個段內地址時,就要用32位表示,就是far指針了。由此可見,如果你想寫在Win16上也能運行的程序,才會涉及到newr、far指針的概念。在Win32上,指針已無near、far的區分。

LPVOID 在MSDN上的定義:A 32-bit pointer to an unspecified type.  32位上未指明的類型。

例子:

 

HANDLE ThreadHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, this, 0, NULL); //線程回調函數this這里可以傳任何變量。
DWORD WINAPI MyClass::ThreadProc(LPVOID Param)
{
//這時候傳進來什么類型,Param就是什么類型。
return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM