我在尋找uint24_t和uint48_t類型的GCC和MinGW。我知道都沒有標準化,但我已經在網上找到他們的參考,我試圖弄清楚:uint24_t和uint48_t in MinGW
- 什麼標題我需要包括他們。
- 無論它們是跨平臺的(至少在Windows,Linux和Mac OSX上),還是隻針對特定的目標。
- 他們的名字是什麼。 uint24_t,__uint24,__uint24_t?
我在尋找uint24_t和uint48_t類型的GCC和MinGW。我知道都沒有標準化,但我已經在網上找到他們的參考,我試圖弄清楚:uint24_t和uint48_t in MinGW
標準uintXX_t類型在stdint.h(C,C++ 98)或cstdint(C++ 11)中提供。
在8位數據,24位地址AVR架構中,GCC提供了一個內置的24位整數,但它不是便攜式的。有關更多信息,請參閱http://gcc.gnu.org/wiki/avr-gcc。
GCC或MinGW沒有以平臺獨立的方式提供標準的24位或48位整數類型,但在任何平臺上獲得便攜式24位數的一種簡單方法是使用位域:
struct bitfield24 {
uint32_t value : 24;
};
bitfield24 a;
a.value = 0xffffff;
a.value += 1;
assert(a == 0);
對於48位,使用uint64_t作爲基礎,也可以做到這一點。
)是的,我聽說過這種方法,雖然它不太令人滿意,但我在GCC修補了__ int 24整數類型(從未遇到過48位版本)的各個地方的谷歌提示。他們是非官方的補丁或只是特定的怪異架構 – 2013-05-04 19:08:14
@Jamin你是對的 - 它看起來像GCC爲AVR架構提供了一個內置的24位類型,它似乎主要用於做地址操作因爲AVR是8位數據,24位地址體系結構,但如果你需要任何便攜式的,你將不得不使用類似我發佈的技術或通過滾動自己的整數類 – wjl 2013-05-05 01:50:27
謝謝,不幸的是我得出的結論,不是說我反對自己的類,但是對於小的本地數據類型,我覺得任何自制的解決方案都很笨拙。 – 2013-05-05 17:02:35
你可以在第406行附近找到'uint24_t' [here](http://www.cs.kent.edu/~ruttan/GamePracticum/Raknet/Doc/html/_rak_net_types_8h_source.html)的示例實現。 – 2013-05-04 18:57:29
謝謝,我的代碼正在做類似的事情,當我搜索了GCC並引用了一個內置的(非標準)擴展。希望我能找到更多關於它的信息。 =( – 2013-05-04 19:09:10