从stdint.h以下
#ifndef int8_t
typedef signed char int8_t;
#define int8_t int8_t
#define INT8_MIN (-128)
#define INT8_MAX (127)
#endif
#define int8_t int8_t
做什么或定义什么?
答案 0 :(得分:1)
它将int8_t
定义为一个宏,其存在可以使用#ifndef int8_t
进行测试,大概是为了防止int8_t
被定义两次。
我不知道为什么这样做。在整个<stdint.h>
标题周围使用单个include guard会更有意义。
(在这个答案的先前版本中,我断言实现是不符合的,因为它将int8_t
定义为宏。这样做是不必要的,但不是无效。引用N1570 7.1 0.3:
具有文件范围的每个标识符都列在以下任何一项中 子条款(包括未来的图书馆方向)是保留的 用作宏名称和具有文件范围的标识符 如果包含任何相关标头,则为名称空间。
因此标识符int8_t
被保留用作宏,并且允许实现的宏定义。)
这是什么实施?