您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何理解int8_t和int64_t和size_t以及ssize_t,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
uint8_t之類
那么_t的意思到底表示什么?具體的官方答案沒有找到,不過我覺得有個答案比較接近。它就是一個結構的標注,可以理解為type/typedef的縮寫,表示它是通過typedef定義的,而不是其它數據類型。既然它們都不是新的數據類型,只是使用typedef給類型起的別名,那為什么需要定義它們了?因為跨平臺,不同的平臺會有不同的字長,所以利用預編譯和typedef可以讓你最有效的維護你的代碼。
它們在stdint.h頭文件中定義,下面的代碼從/usr/include/stdint.h中復制
<span > /* There is some amount of overlap with <sys/types.h> as known by inet code */ #ifndef __int8_t_defined # define __int8_t_defined typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE == 64 typedef long int int64_t; # else __extension__ typedef long long int int64_t; # endif #endif /* Unsigned. */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; #ifndef __uint32_t_defined typedef unsigned int uint32_t; # define __uint32_t_defined #endif #if __WORDSIZE == 64 typedef unsigned long int uint64_t; #else __extension__ typedef unsigned long long int uint64_t; #endif</span>
看完上面的代碼,對uint8_t等就有了清晰明確的認識了
size_t/ssize_t
關于size_t/ssize_t,著急的同學可以先看結論
size_t 無符號整型 32bit系統上等同于unsigned int 64bit系統上等同于unsigned long int
ssize_t 有符號整型 32bit系統上等同于int 64bit系統上等同于long int
32bit系統中 long int為32bit,64bit系統中 long int為64bit
可以從/usr/include/sys/types.h一層層查找,最終會找到ssize_t和size_t的定義。
如何判斷系統位數
getconf WORD_BIT
getconf LONG_BIT
或者使用uname -a
關于如何理解int8_t和int64_t和size_t以及ssize_t就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。