我有大量的常量数据需要存储在头文件中。由于数据的性质(如何嵌套),我决定使用由预处理器初始化的结构。预处理器初始化结构
我想初始化这些结构像这样:
typedef struct s_PWM {
uint8_t muxmode;
char *name;
char *path;
} PWM;
typedef struct s_PIN {
char *name;
uint8_t gpio;
char *mux;
uint8_t eeprom;
PWM *pwm;
} PIN;
这将允许我这样做
PIN p1 = P8_19;
到,从某种意义上说,组装结构用适当的属性。
基本上,你可以一针送入功能
pinMode(P8_19, OUTPUT)
这是有问题的行
#define P8_19 ((PIN){"EHRPWM2A", 22, "gpmc_ad8", 14, (PWM*){4, "EHRPWM2A", "ehrpwm.2:0"}})
这是警告
src/gpio.c:50:2: warning: excess elements in scalar initializer
src/gpio.c:50:2: warning: (near initialization for '(anonymous)')
src/gpio.c:50:2: warning: excess elements in scalar initializer
src/gpio.c:50:2: warning: (near initialization for '(anonymous)')
有没有人有任何想法为什么发生这种情况?我是否错误地将PWM *结构嵌入到PIN结构中?
我最初试图说,但有一些情况下,将不会有一个PWM,所以我需要能够将其设置为NULL。如果它不是指针,那么我可以如何使它在可能存在NULL PWM的情况下工作? – 2012-08-08 19:03:40
好吧,我基本上添加了一个标志PIN密码pwm_present,并将其设置为true或false,所以我不必直接对PIN进行逻辑测试.plm - 谢谢! – 2012-08-08 19:37:44