最近对结构体静态赋值主要使用以下方法,
struct usr_cache
{
int limit;
char *name;
};
struct usr_cache my_cache =
{
100,
"my_cache",
};
或者
struct
{
int limit;
char *name;
}my_cache =
{
100,
"my_cache",
};
对于内部变量比较少的结构体,使用该方法可以为结构体的内部变量一一赋值,并且需要按照顺序一一对应。如果遇到内部变量比较多,只需要赋值其中几个必要值的话,使用该方法就会特别麻烦。可以使用以下方法:
struct usr_cache
{
int limit;
char *name;
int flag;
};
struct usr_cache my_cache1 =
{
.flag = 20,
.limit = 100,
};
注意,必须带上'.'号,不然的话会产生错误,提示变量未声明。‘.’表示自身内部的意思。
利用以上静态定义方法,可以将结构体变量的静态初始化声明为宏。实例如下:
# define INIT_CACHE(cache) {.flag = 20, .limit = 100, }
struct usr_cache my_cache1 = INIT_CACHE(my_cache1);
该形式的宏在预编译的时候会展开,变成与上面一致,即:
struct usr_cache my_cache1 =
{
.flag = 20,
.limit = 100,
};