c语言__int8,浅谈int8_t int64_t size_t ssize_t的相关问题(详解)

在代码中经常看到int8_t/int16_t/int32_t/int64_t/uint8_t/size_t/ssize_t,以前对这个问题一直是稀里糊涂的,不明白它们到底是什么数据类型,现在上班了,必须把它弄明白了

uint8_t之类

那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。既然它们都不是新的数据类型,只是使用typedef给类型起的别名,那为什么需要定义它们了?因为跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。

它们在stdint.h头文件中定义,下面的代码从/usr/include/stdint.h中复制

/* There is some amount of overlap with 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. */

typede

你可能感兴趣的:(c语言__int8)