c库定义了int8\u t

c库定义了int8\u t,c,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\u t做了什么或定义了什么?它将int8\u t定义为一个宏,可以使用\ifndef int8\u t测试其存在性,大概是为了防止int8\u t被定义两次 我不知道

来自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\u t
做了什么或定义了什么?

它将
int8\u t
定义为一个宏,可以使用
\ifndef int8\u t
测试其存在性,大概是为了防止
int8\u t
被定义两次

我不知道它为什么这样做。在整个
标题周围使用单个标题更有意义

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

具有下列任一文件范围的每个标识符 子条款(包括未来图书馆方向)保留给 用作宏名称和文件范围相同的标识符 名称空间(如果包含其任何关联的标题)

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


这是什么实现?

它只是防止相同定义的多个包含(请参阅开头的
\ifndef int8\t
)。