簡體   English   中英

C:將字節數組聲明為uint8_t是否有問題?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM