创建另一个头文件中定义的结构数组

时间:2014-05-08 07:28:39

标签: c arrays struct

我有以下文件结构

service.h
config.h
config.c

service.h文件中,struct serviceStruct声明了一个成员unsigned int.

我在文件array of serviceStructsconfig.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 } 
};

2 个答案:

答案 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来说它编译得很好。