&引用;“最常见”;C中基本类型的typedef

&引用;“最常见”;C中基本类型的typedef,c,naming-conventions,C,Naming Conventions,我在工作中进行了一次小讨论,因为他们决定为C的基本typedefs采用一种新的命名约定 他们的论点是遵循所有C开发人员使用的通用命名约定。现在,我真的不喜欢这种变化,但我想知道有没有这样的事情?”C程序员中最常见的命名约定。我知道windows倾向于使用诸如WORD和DWORD等命名 他们决定从: U8BITtouint8\u t S8BITtoint8\t 等等 我不会评论“Windows标准”,因为我没有使用它们 uint8\t和friends在stdint.h中定义为一种“通用标准”。

我在工作中进行了一次小讨论,因为他们决定为C的基本typedefs采用一种新的命名约定

他们的论点是遵循所有C开发人员使用的通用命名约定。现在,我真的不喜欢这种变化,但我想知道有没有这样的事情?”C程序员中最常见的命名约定。我知道windows倾向于使用诸如
WORD
DWORD
等命名

他们决定从:

  • U8BIT
    to
    uint8\u t
  • S8BIT
    to
    int8\t
  • 等等
我不会评论“Windows标准”,因为我没有使用它们

uint8\t
和friends在stdint.h中定义为一种“通用标准”。 然而,在我看来,这不应该被过度使用

在我看来,只有在需要具有特定位长度的类型的情况下,才应该使用
uint
n
\u t
。对于所有其他情况,您确实应该让编译器决定位长度,并继续使用
long
int
short
。在这种情况下,从性能角度看,对一台机器/体系结构有利的东西可能会对另一台机器造成灾难。

我不会评论“Windows标准”,因为我没有使用它们

uint8\t
和friends在stdint.h中定义为一种“通用标准”。 然而,在我看来,这不应该被过度使用


在我看来,只有在需要具有特定位长度的类型的情况下,才应该使用
uint
n
\u t
。对于所有其他情况,您确实应该让编译器决定位长度,并继续使用
long
int
short
。很可能是这样的,从性能上讲,对一台机器/体系结构有利的东西对另一台机器/体系结构不利。

我见过单字符加大小(即u8、s8)以及您的工作场所决定采用的更多惯例。就个人而言,我更喜欢后者,尽管需要更多的打字。我甚至会更进一步,并添加额外的提示编译器我真正想要的


例如,如果我想要一个最小宽度为32位的无符号整数,但我希望它是最快的本机类型uint\u fast32\t。这是C++11(参考:)中固定宽度整数类型的优点之一。如果适用,我建议遵循标准惯例。

我见过单字符加大小(即u8、s8)以及您的工作场所决定采用的更多惯例。就个人而言,我更喜欢后者,尽管需要更多的打字。我甚至会更进一步,并添加额外的提示编译器我真正想要的


例如,如果我想要一个最小宽度为32位的无符号整数,但我希望它是最快的本机类型uint\u fast32\t。这是C++11(参考:)中固定宽度整数类型的优点之一。如果适用,我建议遵循标准约定。

正如您所说,没有真正的命名约定,最终您可以依赖libc样式(使用后缀,宏只使用大写…)

例如,我不知道是如何做出决定的,但C99标准头中已经存在这样的类型stdint.h:有符号类型的形式为int,其中S替换为以位为单位的大小,无符号类型的形式为uint(带S…)

因此,uint8_t存在于标准中,并且签署的版本是int8_t(而不是sint8_t)。重新定义它们是浪费时间,您应该更喜欢提供的标准


使用提供的定义还有其他好处:您不必担心如何正确定义大小(请记住,许多整数类型在不同的体系结构和操作系统中的大小并不相同,有些甚至可能具有不同的符号!)

正如您所说,没有真正的命名约定,最终您可以依赖libc样式(使用后缀,仅对宏使用大写…)

例如,我不知道是如何做出决定的,但C99标准头中已经存在这样的类型stdint.h:有符号类型的形式为int,其中S替换为以位为单位的大小,无符号类型的形式为uint(带S…)

因此,uint8_t存在于标准中,并且签署的版本是int8_t(而不是sint8_t)。重新定义它们是浪费时间,您应该更喜欢提供的标准


使用提供的定义还有其他好处:您不必担心如何正确定义大小(请记住,许多整数类型在不同的体系结构和操作系统中没有相同的大小,有些甚至可能有不同的符号!)

使用
int
unsigned
可以作为一种快速的通用类型。但是
long
short
实际上没有任何用处。如果有
int
无法满足的限制,使用stdint.h类型会更好,因为它们比
short
long
@mfro:“仅在需要类型的情况下”。什么时候不需要特定类型?每次使用变量时,都有一些条件。例如“可以保留数组长度”或“可以从0到1000000计数”。使用“int”的情况并不像人们期望的那么多"@DeviceFan:如果我有一定的宽度要求,我会使用uint8_t。例如,在嵌入式控制器上写入8位宽的硬件寄存器,其中下一个8位寄存器地址具有完全不同的含义。如果我不需要,我宁愿使用char变量。使用
int
unsigned
可以作为一种快速、通用的方法姿势类型。但是
long
short
实际上没有用。如果有
int
无法满足的限制,使用stdint.h类型更好,因为它们比
short
定义更严格