我现在感觉真的很蠢,因为我已经快 2 年没有做过任何 C/C++ 了,而我的工作让我在那段时间编写 Java,现在我什至连简单的东西都记不住了,否则我记得用 Java 来做这件事的方法......我有一些 C 代码,我试图在 C++ 中使用,但是我遇到了一些不直接兼容的问题,比如结构初始化。结构定义如下所示:
typedef struct
{
struct
{
uint8_t StreamingInterfaceNumber;
USB_Endpoint_Table_t DataINEndpoint;
USB_Endpoint_Table_t DataOUTEndpoint;
} Config;
struct
{
uint8_t RESERVED;
} State;
} USB_ClassInfo_MIDI_Device_t;
原始的 C 样式初始化如下所示:
USB_ClassInfo_MIDI_Device_t MIDI_Interface =
{
.Config =
{
.StreamingInterfaceNumber = 1,
.DataINEndpoint =
{
.Address = MIDI_STREAM_IN_EPNUM,
.Size = MIDI_STREAM_EPSIZE,
.Banks = 1,
},
.DataOUTEndpoint =
{
.Address = MIDI_STREAM_OUT_EPNUM,
.Size = MIDI_STREAM_EPSIZE,
.Banks = 1,
},
},
};
这显然在 C++ 中不起作用。在 C++ 中初始化结构的最佳方法是什么?我不想修改定义,因为它存在于我不维护的代码库中,并且想不理会,所以我宁愿不添加构造函数。我喜欢这里建议的风格https://stackoverflow.com/a/6182627/1609411但我不知道嵌套结构的语法应该是什么样子。