IgorZ wrote: ↑Wed 29 Nov, 2017 12:40 можно ли в современных стандартах Си написать
LUID_AND_ATTRIBUTES Privileges[];
для объявления массива переменной длины?
По стандартам ни в Си, ни в Си++ нет массивов переменной длины (C++ STL не рассматриваю, т.к. это хоть и стандартная, но библиотека). Объявление с
[]
возможно в одном из двух случаев:
MyType arr[] = { MyObj0, MyObj1, … };
— тогда размер массива определяется количеством инициализаторов.
void myFunc( MyType arr[] );
— тогда
arr
просто указывает на начало массива, а информации о количестве элементов нет.
ЕМНИП, некоторые компиляторы поддерживают ещё так объявленный массив в конце структуры (преимущественно для маршалинга данных по сети или в соседний процесс), но подробностей не помню.