我有以下文件结构
service.h
config.h
config.c
在service.h
文件中,struct serviceStruct
声明了一个成员unsigned int.
我在文件array of serviceStructs
和config.h
文件中声明了config.c
,我初始化了成员。
现在我收到错误array type has incomplete element type
我该如何解决这个错误?
[评论更新:]
service.h:
typedef uint32_t board_spi_select_id_t;
struct spi_device
{ //! Board specific select id
board_spi_select_id_t id;
};
的config.h:
#include "service.h"
#define SPI_SLAVE_COUNT 4
#define SPI_SS_ADF4350_C1 0
#define SPI_SS_ADF4350_C2 99
#define SPI_SS_AD9854_C1 3
#define SPI_SS_AD9854_C2 99
struct spi_device ssid[SPI_SLAVE_CNT];
config.c:
#include "config.h"
struct spi_device ssid[SPI_SLAVE_CNT] =
{
{ SPI_SS_ADF4350_C1 },
{ SPI_SS_ADF4350_C2 },
{ SPI_SS_AD9854_C1 },
{ SPI_SS_AD9854_C2 }
};
答案 0 :(得分:2)
在config.c
spi_device_t
未知。
使用struct sp_device
代替spi_device_t
struct spi_device spi_ss_id[4] =
{
...
或声明后者,例如通过添加
typedef struct spi_device spe_device_t;
在service.h
的末尾。
答案 1 :(得分:0)
您正在定义SPI_SLAVE_COUNT
,但在数组定义中使用SPI_SLAVE_CNT
- 请注意不同的拼写。
如果我改变了这个,那对gcc和clang来说它编译得很好。