初始化C中typedef上的整数变量

初始化C中typedef上的整数变量,c,typedef,C,Typedef,我有一个int的定义,我喜欢这样的名字 步骤0: 定义128个元素的数组类型 之后我有一个函数来初始化类型ishida\u opcua\u数组 void ishida_opcua_array_init(ishida_opcua_array array) { int i; for(i = 0; i < 128; i++) array[i] = -56565; } 步骤2: 使用ishida_opcua_array_init()函数

我有一个int的定义,我喜欢这样的名字

步骤0

定义128个元素的数组类型 之后我有一个函数来初始化类型
ishida\u opcua\u数组

void ishida_opcua_array_init(ishida_opcua_array array)
{

        int i;
        for(i = 0; i < 128; i++)
            array[i] = -56565;

}
步骤2

使用ishida_opcua_array_init()函数初始化源_数组 如何使用typedef声明和初始化数组,我希望能够做到这一点

/*
 * Define the variable and you are ready to go
 * initialization has already been done while creating the variable
 */
ishida_opcua_array already_initialized_array;  //already initialzed, ready to use
请注意,在第一步中,我必须首先像这样定义变量

ishida_opcua_array source_array;
然后使用下面的函数初始化变量

ishida_opcua_array_init(source_array);
当然,这只会具体初始化前三名成员,其余成员初始化为0;您可以使用宏生成初始化器:

#define INIT_0 -56565          // well, prefer a better name...
#define INIT_1 INIT_0, INIT_0
#define INIT_2 INIT_1, INIT_1
直到
INIT_7
,然后

ishida_opcua_array already_initialized_array = { INIT_7 };

不去判断这是否真的比你的函数好…

Typedef定义了一个类型,你不能用它来初始化该类型的对象。@n.m还有其他方法吗?对于所有发表评论的人,你能解释一下为什么发表评论吗?调用
ishida_opcua_array_init
是一个很好的方法。我不知道你为什么要用其他方式做这件事。调用函数有什么错?没有否决,但毫无疑问,striclty说的不是mcve,而是片段和imho。你应该解释为什么你认为typedef与变量初始化有关。你的方法与我到目前为止的方法稍有相似,我更感兴趣的是有一个默认的初始化,即当ishida_opcua_数组已经初始化时,变量应该包含10个元素,每个元素的值为-56565 in C,我想到的只是另一个宏:
#define ishida_opcua_数组(NAME)ishida_opcua_数组名={INIT 7}
。。。C++将为这样的目的提供构造函数…
ishida_opcua_array_init(source_array);
ishida_opcua_array already_initialized_array = { 1, 2, 3 };
#define INIT_0 -56565          // well, prefer a better name...
#define INIT_1 INIT_0, INIT_0
#define INIT_2 INIT_1, INIT_1
ishida_opcua_array already_initialized_array = { INIT_7 };