член нулевой длины в структуре. Даже в C ++ есть случаи, когда это полезно при работе с аппаратно-ориентированными низкоуровневыми программами. И я согласен с Дороном по поводу сериализации.
вы можете объявить гибкий член массива структуры следующим образом:
struct blah
{
int foo[];
};
Однако, когда кто-то здесь на работе пытался скомпилировать некоторый код, используя clang в C ++, этот синтаксис не работал. (Он работал с MSVC.) Мы должны были преобразовать его в:
struct blah
{
int foo[0];
};
Просматривая стандарт C ++, я вообще не нашел ссылок на гибкие массивы элементов; Я всегда думал[0]
было недопустимым объявлением, но, по-видимому, для гибкого массива членов оно действительно. Действительно ли гибкие массивы-члены действительны в C ++? Если это так, является ли правильное объявление[]
или же[0]
?