c库定义了int8_t

时间:2016-09-02 15:51:52

标签: c

从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做什么或定义什么?

1 个答案:

答案 0 :(得分:1)

它将int8_t定义为一个宏,其存在可以使用#ifndef int8_t进行测试,大概是为了防止int8_t被定义两次。

我不知道为什么这样做。在整个<stdint.h>标题周围使用单个include guard会更有意义。

(在这个答案的先前版本中,我断言实现是不符合的,因为它将int8_t定义为宏。这样做是不必要的,但不是无效。引用N1570 7.1 0.3:

  

具有文件范围的每个标识符都列在以下任何一项中   子条款(包括未来的图书馆方向)是保留的   用作宏名称和具有文件范围的标识符   如果包含任何相关标头,则为名称空间。

因此标识符int8_t被保留用作宏,并且允许实现的宏定义。)

这是什么实施?