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