我在工作中进行了一些小讨论,因为他们决定为C的基本typedef寻求新的命名约定。
他们的论点是遵循所有C开发人员使用的通用命名约定。现在,我并不真正关心这种变化,但我确实想知道是否有这样的事情? 'C程序员中最常见的命名约定'。我知道Windows倾向于使用WORD
和DWORD
等命名。
他们决定离开:
U8BIT
至uint8_t
S8BIT
至int8_t
答案 0 :(得分:4)
正如你所说,没有真正的命名约定,最终你可以依赖libc样式(使用_t后缀,只对宏使用大写...)
对于您的示例,我不知道如何做出决定,但C99标准头 stdint.h 中已经存在这样的类型:signed类型的形式为intS_t,其中S被替换为bit和unsigned类型的大小形式为uintS_t(带S ...)
因此,uint8_t存在于标准中,签名版本为int8_t(而不是sint8_t。)重新定义它们是浪费时间,您应该更喜欢提供的标准。
使用提供的定义还有其他优点:您不必担心如何正确定义大小(请记住,许多整数类型在各种体系结构和操作系统中的大小不同,有些甚至可能有不同的签字!)
答案 1 :(得分:1)
我不会评论“Windows标准”,因为我没有使用它们。
uint8_t
和朋友在stdint.h中定义,并且就像这样的“共同标准”。
但是,在我看来,这不应该被滥用。
在我看来,只有在需要具有特定位长的类型的情况下,才应使用uint
n _t
。对于所有其他情况,您确实应该将比特长度的决定留给编译器并保持long
,int
和short
。很可能情况是,对于一台机器/架构而言,对于另一台机器/架构有利的可能对另一台机器/架构来说是灾难性的。
答案 2 :(得分:1)
我已经看过单个字符加上大小(即u8,s8)以及您的工作场所决定使用的更多惯例。就个人而言,我更喜欢后者,尽管需要更多打字。我甚至会进一步添加其他内容以提示编译器我真正想要的内容。
例如,如果我想要一个至少32位宽的无符号整数,但我希望它是最快的本机类型uint_fast32_t。这是C ++ 11中固定宽度整数类型的优点之一(参考:http://en.cppreference.com/w/cpp/types/integer)。如果适用,我建议遵循标准惯例。