带有默认值的c结构?
这里我有以下struct
,
typedef struct d {
unsigned int size: 20;
} D;
问题是默认变量size
如何为10
。谢谢你的!
Here I have the following struct
typedef struct d {
unsigned int size: 20;
} D;
the question is how the default variable size
be 10
. Thank your!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在 C 中,类型不能为变量指定默认值。您需要将 C++ 与构造函数一起使用,或者在实例化变量时系统地初始化它。
In C, types cannot specify default values for variables. Either you need to use C++ with a constructor, or to systematically initialize your variable when you instantiate it.
在 C 中,没有默认值或构造函数之类的东西。您必须编写一个函数来使用一些默认值初始化
struct
。或者,您可以切换到 C++ 并创建一个构造函数,该构造函数将使用一些默认值初始化 struct 的成员。In C there no such thing as default values or constructors. You would have to write a function that initializes the
struct
with some default values. Alternatively you can switch to C++ and make a constructor that would initialize the members of thestruct
with some default values.有关
: 20
的信息,请参阅此处以unsigned int size: 20
表示。这是关于位字段的维基百科文章。
See here for information on what
: 20
inunsigned int size: 20
mean.Here is the wikipedia article on bit fields.
pratik 的建议可行(假设他使用的
typedef
是一个拼写错误),但它留下一个漂浮的全局对象。另一种技术:C99 版本的优点是它可以捕获“构造函数”的一些误用,例如,
此外,您可以使用“复合文字”技术来创建更复杂的构造函数,也许可以使用论据。
pratik’s suggestion will work (assuming his use of
typedef
is a typo), but it leaves a global object floating around. An alternative technique:The C99 version has the advantage that it can catch some misuse of the “constructor”, e.g.,
Also, you can use the “compound literal” technique to create more complicated constructors, perhaps with arguments.
为了使结构成员的值成为默认值,您应该使用类似于 OOP 语言中构造函数概念的东西。
通过这种方式,您可以在创建该结构的对象时为结构成员指定默认值...
希望它有帮助..: )
For making a value of a structure member default u should use something similar to a constructor's concept in OOP languages..
This way you can specify default values for structure members wenever you create an object of that structure...
Hope it helps.. :)