[英]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.