哪个大哥能给我解释解释这么写什么来头~?

看内核code时候(linx-4.4.155/net/ipv6/ndisc.c : ndisc_send_na()),见到一种给结构体赋值的写法,暂时没弄明白是怎么回事,先存下来。

#include <stdio.h>
#include <stdlib.h>

struct TEST {
    int aa;
    int bb;
};

int main()
{
    struct TEST *test = malloc(sizeof(test));
    *test = (struct TEST) {    //此处不加前边那个 (struct TEST) 会报错!
        .aa = 10,
        .bb = 20,
    };

    printf("%d %d\n", tset->aa, test->bb);

    return 0;
}

 比较普遍的写法是这样

struct TEST {
    int aa;
    int bb;
} test = {10, 20};

 或者:

struct TEST {
    int aa;
    int bb;
} test = {
    .aa = 10,
    .bb = 20,
};

猜你喜欢

转载自www.cnblogs.com/rivsidn/p/10533431.html