size t和ssie t的區別

2022-08-22 17:51:08 字數 2000 閱讀 1636

網上有一篇非常詳細的尋找定義的過程,自己也做了做。

過程: 1.先在/usr/include/i386-linux-gun找到  

#ifndef __ssize_t _defined     typedef __ssize_t ssize_t

2.檔案中再沒有相關線索,但是有#include , 檢視。

找到  __std_type__ssize_t_type  __ssize_t

其中該檔案有 #define  __std_type  __extension__ typedef

所以 __std_type__ssize_t_type  __ssize_t就相當於:

typedef  __ssize_t_type  __ssize_t

3.檔案中有標頭檔案 #include /*defines __*_t_type macros */

4.  檢視typessize.h,找到 #define  __ssize_t_type   __sword_type 

5. 到目前位置,結果就是最初的  typedef __ssize_t ssize_t  相當於 typedef  __sword_type ssize_t.       

6.在bits/types.h  中 

1

#if __wordsize == 32

2# define __squad_type __quad_t

3# define __uquad_type __u_quad_t

4 # define __sword_type int

5 # define __uword_type unsigned int

6 # define __slong32_type long

int7 # define __ulong32_type unsigned long

int8

# define __s64_type __quad_t

9# define __u64_type __u_quad_t

10/*

we want __extension__ before typedef's that use nonstandard base types

11such as `long long' in c89 mode.

*/12

# define __std_type __extension__ typedef

13#elif __wordsize == 64

14 # define __squad_type long

int15 # define __uquad_type unsigned long

int16 # define __sword_type long

int17 # define __uword_type unsigned long

int18 # define __slong32_type int

19 # define __ulong32_type unsigned int

20 # define __s64_type long

int21 # define __u64_type unsigned long

int22

/*no need to mark the typedef with __extension__.

*/23

# define __std_type typedef

24#else

25# error

26#endif

所以結果就是,ssize_t 在32位機器相當於int (4bytes) , 在64位相當於long int  (8bytes)

而size_t 就是無符號的ssize_t  , 在32位機器上 是 unsigned int /unsigned long (根據編譯器而定, 但都是32位), 

在64位機器上就是64位的。

size type 和 size t 的區別

string st the expense of spirit n cout the size of 那麼size 這個函式返回的型別?一定要記住,絕對不是整形,而是 size type 型別的,所以千萬不要把 size 的返回值賦給乙個 int變數。那麼 size type 到底是一種什麼樣的型別...

C 中size t 和 size type的區別

為了使自己的程式有很好的移植性,c 程式設計師應該盡量使用size t和size type而不是int,unsigned 1.size t是全域性定義的型別 size type是stl類中定義的型別屬性,用以儲存任意string和vector類物件的長度 2.string size type 制型別...

c 中size type和size t的關係

size type 由string類型別和vector類型別定義的型別,用以儲存任意string物件或vector物件的長度,標準庫型別將size type定義為unsigned型別 string抽象意義是字串,size 的抽象意義是字串的尺寸,string size type抽象意義是尺寸單位型別...