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

标签 c++ arrays sizeof

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

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/

相关文章:

c++ - C2070 - 非法大小的操作数

c++ - 编译我的 C++ 代码需要很长时间

python - 有效地将 2D numpy 数组复制为 3D numpy 数组的 channel ?

c++ - C++ 初级多项式程序

javascript - 使用 jQuery 根据值对 JSON 数组进行排序

c++ - 在成员函数中使用 sizeof()

c++ - 递归尾随返回类型?

c++ - win32 c++ 我想在 STATIC 标签的 TEXT 之后直接插入一个 EDIT 控件

c++ - 使用 OpenCV 进行相机校准

c - size_t 的最大尺寸