簡體   English   中英

如何用數組初始化結構數組?

[英]How can I initialize an array of struct with array?

我有以下代碼,但我在初始化時遇到問題。 如何用數組初始化結構數組?

typedef struct
{
    UINT8_T ID;
    string CN;
} CU_ContractDesc;

typedef struct
{
    UINT8_T DataType;
    UINT8_T DataSize;
    string SignalName; //This used only for debugging
    UINT8_T NrCont;
    CU_ContractDesc Contracts [];
} CU_BusDesc;

CU_BusDesc BusItems[]={
     {SS_SINGLE, sizeof(single_T), "S1", 1, {{99, "GV1"}}},
     {SS_UINT32, sizeof(uint32_T), "S2", 1, {{99, "GV1"}, {1, "GV2"}}}
};

如果數組大小是固定的,則必須指定其大小:

struct CU_BusDesc
{
    UINT8_T DataType;
    UINT8_T DataSize;
    string SignalName; //This used only for debugging
    UINT8_T NrCont;
    CU_ContractDesc Contracts [2];
};

或者

struct CU_BusDesc
{
    UINT8_T DataType;
    UINT8_T DataSize;
    string SignalName; //This used only for debugging
    UINT8_T NrCont;
    std::array<CU_ContractDesc, 2> Contracts;
};

CU_BusDesc BusItems[]={
     {SS_SINGLE, sizeof(single_T), "S1", 1, {{{99, "GV1"}}}},
     {SS_UINT32, sizeof(uint32_T), "S2", 1, {{{99, "GV1"}, {1, "GV2"}}}}
};

請注意, std::array初始化需要額外的大括號。

如果數組不是固定大小,則應使用std::vector ,c++ 不支持具有未指定大小的數組的結構:

struct CU_BusDesc
{
    UINT8_T DataType;
    UINT8_T DataSize;
    string SignalName; //This used only for debugging
    UINT8_T NrCont;
    std::vector<CU_ContractDesc> Contracts;
};

這將適用於您的原始初始化程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM