[英]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.