簡體   English   中英

如何在C中聲明結構數組

[英]How to declare array of structs in C

在用數據填充結構之前,我很難聲明一個結構數組。

我的結構看起來像這樣:

typedef struct {
  uint8_t * p_data;     ///< Pointer to the buffer holding the data.
  uint8_t   length;     ///< Number of bytes to transfer.
  uint8_t   operation;  ///< Device address combined with transfer direction.
  uint8_t   flags;      ///< Transfer flags (see @ref NRF_TWI_MNGR_NO_STOP).
} nrf_twi_mngr_transfer_t;

在我的代碼中,我試圖像這樣聲明數組:

struct nrf_twi_mngr_transfer_t start_read_transfer[10];

但是我得到一個編譯錯誤:

數組類型的元素類型'struct nrf_twi_mngr_transfer_t'不完整

我進行了搜索,因為我認為這應該很普通,但是我無法弄清楚自己在做什么錯。 也許因為其中一個元素是指針? 但是那個指針應該是固定大小的吧?

非常感謝

看起來有些解釋是適當的。 這段代碼

typedef struct {
    //...
} nrf_twi_mngr_transfer_t;

已經定義了可以直接使用的類型 相反,

struct nrf_twi_mngr_transfer_struct {
    //...
};

將定義一個結構名稱,要訪問它,您需要指出您正在引用一個結構。

因此,鑒於以上兩個定義,您應該以不同的方式定義數組:

nrf_twi_mngr_transfer_t arr[10]; // if using typedef
struct nrf_twi_mngr_transfer_struct arr2[10]; // if using struct with no typedef

萬一您想知道,

struct {
    //...
} nrf_twi_mngr_transfer_obj;

定義一個匿名結構類型的對象。

暫無
暫無

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

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