[英]C: Is there something wrong with declaring byte arrays as uint8_t?
我正在研究一个使用字节数组的小型网络应用程序。 传统上这些将用char buf[] = ...
。
这似乎是在大多数教程中完成的(仍然?),但它有一个问题,它可能会模糊实际发生的事情,例如当你尝试打印这样的数组并忘记不是每个字符都是可见的字符。
有些人建议你应该完全停止使用chars
,而是使用现代的uint8_t
。 我发现这非常吸引人,主要是基于明确比隐含更好的原则。
因此,将这些类型的数组声明为uint8_t buf[] = ...
是否有问题?
从在C99中引入stdint.h
头开始,没有充分的理由继续使用char
类型来表示小数字。
除了更好地记录您的意图之外, uint8_t
为您提供了一个更重要的优势:它保证字节将被视为无符号。 当您使用char
您不能假设它是有符号还是无符号,因为此行为是实现定义的。
对于缓冲区的无意打印,使用uint8_t
并不能保证任何保护,因为在许多平台上它只是unsigned char
的typedef
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.