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