網上有一篇非常詳細的尋找定義的過程,自己也做了做。
過程: 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抽象意義是尺寸單位型別...