我手边没有任何平台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 */
Run Code Online (Sandbox Code Playgroud)
然后,当包含文件时stdint.h,我希望看到它uint8_t不再是一个可行的类型.
但确实如此.
语言标准如何解决这个问题?
该文件limits.h不是编译器的配置文件; 它是一种机制,通过该机制,实施为您提供信息.你的编译器知道它char有8位,那uint8_t就是unsigned char; 它不需要读取limits.h文件来找出它.
如果你想要一个汽车类比,通过你的燃油表锤击钉子不会阻止你运行坦克干.