ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
10 июля
324599 Топик полностью
rezident (22.04.2012 00:56, просмотров: 67) ответил Юра на Подскажите, что означает [] в объявлении typedef struct val{ uint8_t cmd;uint8_t addr[2];uint8_t data[]; }val_t; ? Как компилятор узнает sizeof от val_t? Так разрешено делать?
Это uncomplete type/struct. Так делать можно, но только в C99 по-моему. В C89 не допускалось вроде как. Последним элементом в структуре будет не массив, а указатель на него. Так что sizeof даст некую фигню, где вместо (неизвестного) размера последнего массива будет посчитан лишь размер указателя.