我現在正在瀏覽「Arduino \ hardware \ tools \ avr \ avr \ include」文件夾中的avr庫。在stdint.h
文件中,有一段代碼:avr-gcc庫中typedef int16_t int_fast16_t的用途
typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__)));
typedef signed int int32_t __attribute__ ((__mode__ (__SI__)));
typedef uint16_t uint_fast16_t;
/** \ingroup avr_stdint
fastest signed int with at least 32 bits. */
typedef int32_t int_fast32_t;
所以基本上int32_t
,int_fast32_t
和signed int __attribute__ ((__mode__ (__SI__)))
是一樣的。有人可以證實嗎?
如果是,爲什麼這樣做?爲什麼不只是使用int32_t?
「的代碼和平」通常情況下,我不對語言錯誤大驚小怪,但這實際上很有趣。這是「一塊」,順便說一句。沒有冒犯的意思。 :-) – Downvoter
如果你問爲什麼'stdint.h'聲明'int_(least | fast)N_t'類型以及你期望的'intN_t'類型,答案是語言標準(C99)需要最少/快速的類型,因爲委員會認爲它們會有用。事實證明,他們錯了,但向後兼容性意味着即使幾乎沒有人使用它們,標題也必須繼續聲明它們。如果你問別的東西,我不明白你在問什麼,請澄清。 – zwol
@cad。謝謝:),只是機械標記 – Qeeet