我有大量的常量數據需要存儲在頭文件中。由於數據的性質(如何嵌套),我決定使用由預處理器初始化的結構。預處理器初始化結構
我想初始化這些結構像這樣:
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