LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

У этой хрени

typedef struct {
  uint64_t len;
  char data[0];
} str_t;
будет неправильный sizeof. Размер подобной структуры придется определять через len + sizeof (хотя тут есть свои подводные камни, если там data не char то надо делать #pragma pack еще, фиг знает как там компилятор эту структуру упакует). И если такую структуру попробовать передать по значению в функцию, это не будет нормально работать.

К тому же массивы нулевой длины это gcc extension https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html

Исходная версия SZT, :

У этой хрени

typedef struct {
  uint64_t len;
  char data[0];
} str_t;
будет неправильный sizeof. Размер подобной структуры придется определять через len + sizeof (хотя тут есть свои подводные камни, если там data не char то надо делать #pragma pack еще, фиг знает как там компилятор эту структуру упакует). И если такую структуру попробовать передать по значению в функцию, это не будет нормально работать.