我手头没有CHAR_BIT > 8
的平台。
所以我更改了文件limits.h
中的相关预处理器定义:
#define CHAR_BIT 16 /* number of bits in a char */
#define SCHAR_MIN (-32768) /* minimum signed char value */
#define SCHAR_MAX 32767 /* maximum signed char value */
#define UCHAR_MAX 0xffff /* maximum unsigned char value */
然后,当包含文件stdint.h
时,我希望看到uint8_t
不再是可行类型。
但它确实如此。
语言标准如何解决这个问题?
答案 0 :(得分:7)
文件limits.h
不是编译器的配置文件;它是一种机制,通过该机制,实施为您提供信息。您的编译器知道 char
有8位且uint8_t
是unsigned char
;它不需要读取limits.h
文件来找到它。
如果你想要一个汽车类比,通过你的燃油表锤击钉子不会阻止你运行油箱干燥。