我想要一个类似于这个(无效)的结构:
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 中,它说“如果初始化了一个未知大小的数组,它的大小由具有显式初始化程序的最大索引元素决定。在它的初始化列表的末尾,数组不再有不完整的类型。”对我来说,这表明在初始化第一个值时,数组的类型(及其大小)仍然不完整。
关于c++ - 作为数组元素的初始化数组的大小(USB 描述符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30455150/