作为数组元素的初始化数组的大小(USB 描述符)
The size of an initialized array as element of the array (USB descriptor)
我想要一个类似于这个(无效)的结构:
const uint8_t uArray[] = { uint8_t(sizeof(uArray)), 1, 2, 3 };
并且uArray[0]应该是4并且在编译时自动填充,这是USB描述符定义的情况,通常表示为字节数组,第一个字节值是元素的大小.
这在理论上应该是可行的,因为数组已经初始化但不知何故我无法表达它。
欢迎提出解决此问题的任何建议。
我阅读了规范 http://open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf,在第 6.7.8.19 段中它指出初始化是按初始化列表顺序进行的,而在 6.7.8.22 中它说 "If an array of unknown size is initialized, its size is determined by the largest indexed element with an explicit initializer. At the end of its initializer list, the array no longer has incomplete type." 对我来说,这表明在初始化第一个值时,数组的类型(及其大小)仍然不完整。
我想要一个类似于这个(无效)的结构:
const uint8_t uArray[] = { uint8_t(sizeof(uArray)), 1, 2, 3 };
并且uArray[0]应该是4并且在编译时自动填充,这是USB描述符定义的情况,通常表示为字节数组,第一个字节值是元素的大小.
这在理论上应该是可行的,因为数组已经初始化但不知何故我无法表达它。
欢迎提出解决此问题的任何建议。
我阅读了规范 http://open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf,在第 6.7.8.19 段中它指出初始化是按初始化列表顺序进行的,而在 6.7.8.22 中它说 "If an array of unknown size is initialized, its size is determined by the largest indexed element with an explicit initializer. At the end of its initializer list, the array no longer has incomplete type." 对我来说,这表明在初始化第一个值时,数组的类型(及其大小)仍然不完整。