【发布时间】:2011-03-28 22:43:44
【问题描述】:
我正在尝试使用默认值创建结构。我不知道如何做到这一点,因为我看到的每个代码都是关于初始化的,我希望它以自然的方式......
struct stuff {
int stuff_a = 1;
int stuff_b = 2...
...and so on...
};
环顾四周,我发现了这个 (C++) 代码:
struct a{ a() : i(0), j(0) {}; INT i; INT j;}
我从来没有见过这样的 C 语言。请帮助我理解它;我觉得挺好看的!
更新:等等,我在问 C !!!!为什么改变我的问题?如果这在 C 中是不可能的,就说...我不知道 C++,我不知道那是关于 C++...
【问题讨论】:
-
这在 C 中是不可能的。也就是说,C 不支持默认初始化器。你可以在 C99 中实现在 C++ 中无法实现的各种效果,反之亦然,但你不能做你看起来正在做的事情,这就是你的编译器抱怨的原因。
-
您可以通过将结构初始化为您想要的值并在每次创建结构时在“init”函数中进行复制来伪造它。在纯 C 中没有这样做的干净方法。此外,您可以使用执行分配的“工厂”创建对象并将其初始化为默认值。