Tag: 灵活数组成员

灵活的数组成员可能导致未定义的行为?

通过在结构types中使用灵活数组成员(FAM),我们是否将我们的程序暴露给未定义行为的可能性? 一个程序是否可以使用FAM,而且仍然是一个严格符合的程序? 灵活数组成员的偏移量是否需要在结构的末尾? 这些问题适用于C99 (TC3)和C11 (TC1) 。 #include <stdio.h> #include <stdlib.h> #include <stddef.h> int main(void) { struct s { size_t len; char pad; int array[]; }; struct s *s = malloc(sizeof *s + sizeof *s->array); printf("sizeof *s: %zu\n", sizeof *s); printf("offsetof(struct s, array): %zu\n", offsetof(struct s, array)); s->array[0] = 0; s->len = 1; printf("%d\n", s->array[0]); […]

灵活的C结构arrays成员

从C-std节6.7.2.1引用, struct s { int n; double d[]; }; 这是一个有效的结构声明。 我正在寻找这种语法的一些实际用法。 确切地说,这个结构是如何保持一个双重的*作为第二个元素? 或者,这是另一种“你可以做多种方式”的情况吗? Arpan