在Visual Studio 14
标stdint.h
头中有固定宽度整数类型的定义,但如果您真正查看那里的定义,它们只是委托回原语。定义如下:
typedef signed char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
stdint.h
那么,如果它所做的只是回退到原语,是否有任何理由使用它?我也知道 Visual Studio 不只是在编译时替换这些定义,因为如果您尝试将 an 打印int8_t
到控制台,您将得到一个 Unicode 字符而不是数字,因为它实际上只是一个signed char
.
编辑
因为人们指出,他们在逻辑上没有其他东西可以定义,我认为我的问题需要重述。
为什么在 C++ 规范中声明它将具有 8、16、32 和 64 位固定长度的整数的标头将这些整数定义为根据定义可以是编译器想要的任何大小的类型(放入其他人在另一个问题中所说的方式The compiler can decide that an int will a 71 bit number stored in a 128 bit memory space where the additional 57 bits are used to store the programmers girlfriends birthday.
)?