只是好奇,如果u_char是一個標準。我一直使用它,假設它是與uintX_t類型一起定義的,等等。但我看到我們的一些代碼庫從u_char過渡到「無符號字符」,原因是「所以用戶不必定義u_char本身」。u_char是標準嗎?
回答
它不存在於任何舊的頭文件中(除了某些特定區域,像Kerberos和網絡標頭),而不是我知道的任何編譯器中的內置類型。
字符串u_char
沒有出現在這個C標準的草案:
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
它不是由POSIX要求要麼,據我所知。
我認爲它在BSD(sys/types.h)和Windows(winsock.h)中。我不認爲任何一個人都是「一個標準」 - 他們不是正式的標準,他們當然不是標準C的一部分,但他們是明確定義和記錄的。
的一部分,而且使用這些醜陋的非標準類型的問題是,你必須非常小心定義它們。有些系統已經定義了它們(這是錯誤的),如果你自己定義它們,會導致錯誤,但是其他系統不會,這意味着除非你自己定義它,否則不能使用該類型。最安全的方法就是不要像這樣使用垃圾,不要懶惰,當你指出它時寫出'unsigned char'。 –
@R ..或使用'
@JonathonReinhart:實際上使用'uint8_t'有一個內置的斷言'CHAR_BIT == 8',因爲如果CHAR_BIT> 8,類型被禁止存在。如果你想要一個8位的類型,這很好,但是如果你的意思是「在這個實現中佔用一個存儲單元的一個無符號整數類型,不管可能是什麼」,那麼你應該說:'unsigned char'。 –
不,u_char
是非標準的。如果您需要使用與u_char
等效的標準類型,則可以使用屬於C99標準庫(請檢查特定平臺/編譯器是否符合C99)的uint8_t
。 stdint.h
定義了此類型(以及許多其他特定的整型)。 This Wikipedia article contains more information about stdint.h
.
- 1. Python標準庫真的是標準嗎?
- 2. WPF是ECMA標準庫嗎?
- 3. IBM JRE是標準VM嗎?
- 4. ConstraintLayout是新標準嗎?
- 5. 是shell的`source` POSIX標準嗎?
- 6. 這是for-in循環標準嗎?
- 7. Python不是標準化語言嗎?
- 8. utf8_general_ci - 它是標準的Unicode嗎?
- 9. 默認Servlet是(事實上)標準嗎?
- 10. 是參數化查詢SQL標準嗎?
- 11. 是Eclipse的$ FALL-THROUGH $註釋標準嗎?
- 12. 是syscall(2)標準的一部分嗎?
- 13. CSS子選擇符是W3C標準嗎?
- 14. 是GLTools的標準OpenGL庫嗎?
- 15. 聯盟是標準佈局類型嗎?
- 16. alloca是C++標準的一部分嗎?
- 17. $ id令牌是JSON標準嗎?
- 18. 這是符合標準的結果嗎?
- 19. Apple的PLIST是開放標準嗎?
- 20. 這是一種favicon鏈接標準嗎?
- 21. 是C標準的TRUE/FALSE部分嗎?
- 22. C標準是不斷要求的嗎?
- 23. IEC 61968標準是不是「標準化」?
- 24. Mobile Safari中的新窗口圖標是標準圖標嗎?
- 25. 加入已批准的標準嗎?
- 26. ISO標準命名是否有標準?
- 27. 字符串搜索u_char *
- 28. 字符串轉換爲u_char *
- 29. size_t僅在C++標準或C標準中嗎?
- 30. JPA標準聯盟:將採用JPA標準嗎?
u_char是不是官方ANSI C標準 –