1、结构体初始化
struct TAG_TEST_STRU
{
int b;
int c;
}TEST_STRU;
//(1) 初始化
struct TEST_STRU a1 = {
.b = 1,
.c = 2
};
//(2) 初始化
struct a a1 = {
b:1,
c:2
};
//(3) 初始化
struct a a1 = { 1, 2};
//内核喜欢用第一种方式,例如
static struct notifier_block panic_block = {
.notifier_call = hung_task_panic,
};
2、数组赋值
//这是一个GNU扩展
int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
int a[6] = { [4] = 29, [2] = 15 };
//等价于
int a[6] = { 0, 0, 15, 0, 29, 0 };
int a[6] = { [1] = v1, v2, [4] = v4 };
//等价于
int a[6] = { 0, v1, v2, 0, v4, 0 };