我有一个名为single_instance
的结构的单个实例。此实例包含类型为struct example_type
的常量对象。
typedef struct {
int n;
} example_type;
struct {
int some_variables;
// ...
const example_type t1;
const example_type t2;
// ...
} single_instance;
假设我想将single_instance.t1
初始化为{1}
,并将single_instance.t2
初始化为{2}
。
最优雅的方法是什么?
无法进行在线初始化:
struct {
int some_variables;
// ...
const example_type t1 = {1};
const example_type t2 = {2};
// ...
} single_instance;
这也不起作用:
struct {
int some_variables;
// ...
const example_type t1;
const example_type t2;
// ...
} single_instance {0, {0}, {1}};
我已经阅读了与该主题相关的其他多个线程,但是似乎它们都引用带有“名称”的初始化结构。在这种情况下,我只需要一个single_instance
的实例化,因为这种类型应该没有名称。
答案 0 :(得分:3)
您可以使用指定的初始值设定项显式初始化您感兴趣的成员。其余成员将隐式初始化为0。
struct {
int some_variables;
// ...
const example_type t1;
const example_type t2;
// ...
} single_instance = {.t1 = {1}, .t2 = {2}};
答案 1 :(得分:1)
这对我有用(也许您只是在初始化中缺少=
):
#include<stdio.h>
typedef struct {
int n;
} example_type;
struct {
int some_variables;
// ...
const example_type t1;
const example_type t2;
// ...
} single_instance = {0, {1}, {2}};
int main() {
printf("%d %d %d\n", single_instance.some_variables, single_instance.t1.n, single_instance.t2.n);
}