淺談int8_t int64_t size_t ssize_t的相關(guān)問題(詳解)
在代碼中經(jīng)??吹絠nt8_t/int16_t/int32_t/int64_t/uint8_t/size_t/ssize_t,以前對這個問題一直是稀里糊涂的,不明白它們到底是什么數(shù)據(jù)類型,現(xiàn)在上班了,必須把它弄明白了
uint8_t之類
那么_t的意思到底表示什么?具體的官方答案沒有找到,不過我覺得有個答案比較接近。它就是一個結(jié)構(gòu)的標(biāo)注,可以理解為type/typedef的縮寫,表示它是通過typedef定義的,而不是其它數(shù)據(jù)類型。既然它們都不是新的數(shù)據(jù)類型,只是使用typedef給類型起的別名,那為什么需要定義它們了?因為跨平臺,不同的平臺會有不同的字長,所以利用預(yù)編譯和typedef可以讓你最有效的維護你的代碼。
它們在stdint.h頭文件中定義,下面的代碼從/usr/include/stdint.h中復(fù)制
<span style="font-family:Microsoft YaHei;font-size:14px;"> /* 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等就有了清晰明確的認(rèn)識了
size_t/ssize_t
關(guān)于size_t/ssize_t,著急的同學(xué)可以先看結(jié)論
size_t 無符號整型 32bit系統(tǒng)上等同于unsigned int 64bit系統(tǒng)上等同于unsigned long int
ssize_t 有符號整型 32bit系統(tǒng)上等同于int 64bit系統(tǒng)上等同于long int
32bit系統(tǒng)中 long int為32bit,64bit系統(tǒng)中 long int為64bit
可以從/usr/include/sys/types.h一層層查找,最終會找到ssize_t和size_t的定義。
如何判斷系統(tǒng)位數(shù)
getconf WORD_BIT
getconf LONG_BIT
或者使用uname -a
以上這篇淺談int8_t int64_t size_t ssize_t的相關(guān)問題(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++開發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化
這篇文章主要介紹了C++開發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化方法的相關(guān)資料,需要的朋友可以參考下2015-07-07
C語言實現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法
這篇文章主要介紹了C語言實現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法,涉及系統(tǒng)函數(shù)atoi()函數(shù)的使用技巧,需要的朋友可以參考下2014-12-12
C++?JSON庫?nlohmann::basic_json::accept的用法解析
nlohmann::basic_json::accept 是 Nlohmann JSON 庫中的一個方法,它用于檢查一個字符串是否可以解析為有效的 JSON,這篇文章主要介紹了C++?JSON庫nlohmann::basic_json::accept的用法,需要的朋友可以參考下2023-06-06
C++實現(xiàn)圖片jpg格式變成16位565bmp格式
這篇文章主要為大家詳細(xì)介紹了C++如何實現(xiàn)圖片jpg格式變成16位565bmp格式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2025-03-03
vc++實現(xiàn)的tcp socket客戶端和服務(wù)端示例
這篇文章主要介紹了vc++實現(xiàn)的tcp socket客戶端和服務(wù)端示例,需要的朋友可以參考下2014-03-03

