ヘッダー ファイルに格納する必要がある大量の定数データがあります。データの性質 (入れ子になっている方法) により、プリプロセッサによって初期化される構造を使用することにしました。
これらの構造体を次のように初期化しようとしています。
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 構造体に入れ子にしていますか?