在使用数据填充结构之前,我无法声明一组结构.
我的结构看起来像这样:
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;
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我试图像这样声明数组:
struct nrf_twi_mngr_transfer_t start_read_transfer[10];
Run Code Online (Sandbox Code Playgroud)
但是我得到一个编译错误:
数组类型具有不完整的元素类型'struct nrf_twi_mngr_transfer_t'
我已经四处寻找,因为我认为这应该是一个普通的事情,但我无法弄清楚我做错了什么.也许是因为其中一个元素是一个指针?但那个指针应该是一个固定的大小吧?
非常感谢
看起来有些解释是有道理的.这段代码
typedef struct {
//...
} nrf_twi_mngr_transfer_t;
Run Code Online (Sandbox Code Playgroud)
已经定义了一种可以直接使用的类型.相反,
struct nrf_twi_mngr_transfer_struct {
//...
};
Run Code Online (Sandbox Code Playgroud)
将定义结构名称,并且要访问它,您需要指明您指的是结构.
因此,根据上面的两个定义,您应该以不同的方式定义数组:
nrf_twi_mngr_transfer_t arr[10]; // if using typedef
struct nrf_twi_mngr_transfer_struct arr2[10]; // if using struct with no typedef
Run Code Online (Sandbox Code Playgroud)
如果你想知道,
struct {
//...
} nrf_twi_mngr_transfer_obj;
Run Code Online (Sandbox Code Playgroud)
定义匿名结构类型的对象.