使用#define
是明確不是在C一個好主意++。即使在C中,您也可以使用typedef
作爲類型。
typedef unsigned __int8 U8;
然而,正如戴維(看他的鏈接完整列表)中提到,你必須在C++中原子的定義,例如:
std::atomic_uint_fast8_t
// or
std::atomic<std::uint_fast8_t>
// with the typedef:
typedef std::atomic_uint_fast8_t U8;
然而,如果你想成爲一個有點不太先進,您可以包括cstdint
包括,這是在大多數情況下,究竟會在大多數計算機上工作:
#include <cstdint>
這使你的標準[U] INT [8,16,32,64] _t類型。因此,與上述類型相同:
uint8_t my_var;
// if you really want to use a typedef:
typedef uint8_t U8;
U8 my_var;
這些類型是便攜式的,不需要額外的typedef。
對於float
和double
,這些通常是便攜。什麼不是反正很少使用的long double
。你仍然可以有一個typedef,以防萬一:
typedef float F32;
然後隨時隨地在你的代碼,你必須使用這些定義,而不是默認的C/C++類型(即char
,short
,int
,long
是被禁止的。)
把所有那些在報頭,所有其他C++文件包括。
更新:在每個類型
顯然
足夠的內存,如果使用uint8_t
,那麼你就可以確保你至少有一個8位數字。它也可能是16位...(某些處理器受到這種限制)同樣,一個uin32_t
將至少有32位。
編譯時檢查是否真的需要確認。這使用了帶有模板的sizeof()
。在這裏看到:
Compile-time sizeof conditional
請注意,這不是專門針對遊戲。任何編程都應仔細選擇它們的變量類型。越來越多的人正在使用64位整數,以確保它們可以支持2Gb以上的尺寸(如果使用無符號...,則爲4Gb)
僅供參考 - 歐洲阿麗亞娜火箭之一(這是法國的在事故發生時)被炸燬,因爲一個變量是8位,而應該是16位。這讓你知道爲什麼它很重要...
你也可以使用[typedefs](http://en.wikipedia.org/wiki/Typedef)。這實際上是首選技術。 – BWG
http://en.cppreference.com/w/cpp/atomic/atomic – David
你有什麼問題,_specifically_?如何別名類型?如何獲得固定寬度的整數?如何獲得原子類型?什麼? –