在C

时间:2018-03-14 12:56:19

标签: c typedef

我有一个int的定义,我的首选名称是这样的

第0步

定义128个元素的数组类型

typedef int ishida_opcua_array[128];

以后我有一个函数来初始化类型ishida_opcua_array

void ishida_opcua_array_init(ishida_opcua_array array)
{

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

}

最后;这就是我使用ishida_opcua_array类型

的方式

第1步

定义一个类型为ishida_opcua_array

的数组
 ishida_opcua_array source_array;

第2步

使用ishida_opcua_array_init()函数初始化source_array

 ishida_opcua_array_init(source_array);
 /*
  * Then i can do whatever i want with [source_array]
  */

如何使用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);

1 个答案:

答案 0 :(得分:0)

ishida_opcua_array already_initialized_array = { 1, 2, 3 };

当然,这只会专门初始化前三个成员,其余成员为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 };

不会判断这是否真的比你的功能更好......