2011-06-17 96 views
17

有人請告訴我:caddr_t的意義何在,何時使用?

  1. 什麼是caddr_t
  2. 何時使用?
  3. void*有何不同?
  4. 何時使用void*何時使用caddr_t

在此先感謝。

+1

「保存演員」? :)至少在Linux x64上它最終是'char *'(在首次通過'__kernel_caddr_t'之後)。在這方面它作爲*不透明類型*。 – 2011-06-17 05:39:03

+0

不知道從你說什麼:-(什麼是「保存一個演員陣容」?爲什麼不直接使用char *。我不認爲它是這樣的。主要是我已經看到這用於內存分配相關特別是使用mmap。 – kingsmasher1 2011-06-17 05:51:13

+0

http://computer-programming-forum.com/47-c-language/f3a1576887d6652f.htm – gavv 2016-08-24 10:49:33

回答

16

caddr_t是一個傳統的BSD類型與一些低級別的調用相關聯,如mmap,它不應該在現代代碼中使用。它被POSIX標準拒絕。標準化的mmap使用void *

+0

你說過:「caddr_t是一種傳統的BSD類型,與像mmap這樣的低級調用相關聯」,你在同時存在'void *'的情況下,我們不得不提及它的關聯的原因 – kingsmasher1 2011-06-17 06:24:47

+4

它可能是在'void *'存在之前創建的,儘管我沒有對這個索引的引用,但無論如何它現在都是不相關的。這不是任何現代標準的一部分,不應該用在新代碼中,應該用舊代碼來修復。 – 2011-06-17 06:28:01

+0

謝謝你的回答。我理解你的觀點,但是你可以發佈一個鏈接/參考文獻:「caddr_t已經過時,而是void *必須是u sed「? – kingsmasher1 2011-06-17 06:31:48

相關問題