Tag: specified initializer

C中的隐秘结构定义

我遇到了以下迷宫定义代码: typedef struct mazeNode { int hasCheese; int tag; struct mazeNode *left; struct mazeNode *right; } maze_t; maze_t maze = { .tag = 1, .left = &(maze_t) { .left = &(maze_t) { .left = &(maze_t) {}, .right = &(maze_t) {} }, .right = &(maze_t) { .right = &(maze_t) {} } }, .right = &(maze_t) { […]

是否有办法警告行为不端的指定初始化器?

C99引入了结构的指定初始化器的概念。 例如,给定: typedef struct { int c; char a; float b; } X; 我可以初始化为: X foo = {.a = ‘\1’, .b = 2.0F, .c = 4}; 并且调用: printf(“c = %d\na = %hhu\nb = %f”, foo.c, foo.a, foo.b); 输出: c = 4 a = 1 b = 2.000000 如此处所述,这具有分配给c然后b然后b的“令人惊讶的行为”,与我指定的初始化器的顺序无关。 如果我有这样的函数,这将成为一个真正的问题: int i = 0; int f() […]