初始化数组的大小作为数组的元素(USB描述符)

Kik*_*Cat 5 c++ arrays sizeof

我想要一个类似于这个(无效)的构造:

const uint8_t uArray[] = { uint8_t(sizeof(uArray)), 1, 2, 3 }; 
Run Code Online (Sandbox Code Playgroud)

并且uArray [0]应为4并在编译时自动填充,这是USB描述符定义的情况,通常表示为字节数组,第一个字节值是元素中的大小.

这在理论上应该是可能的,因为数组已经初始化但不知何故我无法表达它.

欢迎任何解决此问题的建议.

小智 4

我阅读了规范http://open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf,在第6.7.8.19段中,它指出初始化按初始化列表顺序进行,在6.7.8.22中它说“如果初始化了未知大小的数组,则其大小由具有显式初始化程序的最大索引元素确定。在其初始化程序列表的末尾,该数组不再具有不完整的类型。” 对我来说,这表明在初始化第一个值时,数组的类型(及其大小)仍然不完整。