在這裏,我有以下struct
c結構與默認的valuabel?
typedef struct d {
unsigned int size: 20;
} D;
的問題是默認的變量size
怎樣的10
。謝謝你!
在這裏,我有以下struct
c結構與默認的valuabel?
typedef struct d {
unsigned int size: 20;
} D;
的問題是默認的變量size
怎樣的10
。謝謝你!
在C中,類型不能指定變量的默認值。要麼你需要使用C++構造函數,要麼在實例化時系統地初始化變量。
在C中沒有默認值或構造函數。你必須編寫一個函數,用一些默認值初始化struct
。或者,您可以切換到C++並創建一個構造函數,以便使用某些默認值初始化struct
的成員。
有關: 20
unsigned int size: 20
的含義的信息,請參閱here。
這是關於bit fields的維基百科文章。
爲了使結構成員默認ü應在OOP語言使用類似構造函數的概念東西..
typedef struct d {
unsigned int size;
} D{20};
這種方式可以爲wenever您創建的對象結構的成員指定默認值的值該結構...
希望它能幫助.. :)
pratik的建議將工作(假設他使用的typedef
是一個錯字),但它留下一個全局對象左右浮動。另一種技術:
struct d {
unsigned int size;
};
/* use only *one* of these next lines */
#define D (struct d){20} // C99
#define D {20} // C89
…
struct d foo = D; // in either case
的C99版本具有的優點是它可以趕上「構造」,例如一些濫用,
struct d {
unsigned int size;
};
#define D99 (struct d){.size = 20}
#define D89 {20}
…
float a[17] = D89; // compiles, but is that really what you meant?
float b[17] = D99; // will not compile
此外,您還可以使用「複合文字」技術來創建更復雜的構造,或許與參數。
'typedef'應該在那裏嗎? – 2011-04-07 18:43:16
沒有它不需要..我只是忽略它..只是複製他的代碼,並將其粘貼在這裏... – pratik 2011-04-08 05:43:17
我的意思是它比不需要更糟糕:它試圖做'typedef結構d D;'_and_'struct d D = {20};' - 它甚至不會像這樣編譯。看到我的答案。 – 2011-04-08 15:47:07