在这里,我有以下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