헤더 파일에 저장해야하는 많은 양의 상수 데이터가 있습니다. 데이터의 본질 (중첩 된 방식) 때문에 전 처리기로 초기화 된 구조체를 사용하기로 결정했습니다. 프리 프로세서 초기화 구조체
나는과 같이 이러한 구조체를 초기화하는 것을 시도하고있다 :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)
이이
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)')
사람이 어떤 아이디어가 있습니까 경고에게 있습니다
#define P8_19 ((PIN){"EHRPWM2A", 22, "gpmc_ad8", 14, (PWM*){4, "EHRPWM2A", "ehrpwm.2:0"}})
문제의 라인입니다 왜 이런 일이 일어 났습니까? PIN 구조체에 PWM 구조체를 잘못 중첩 시켰습니까?
처음에 그걸 시도했지만, PWM이 없을 경우가 있기 때문에 NULL로 설정할 필요가 있습니다. 포인터가 아닌 경우 NULL PWM이있을 수있는 곳에서 어떻게 작동합니까? –
좋아요, 기본적으로 PIN pwm_present에 플래그를 추가하고이를 true 또는 false로 설정하여 PIN.pwm에 대해 직접 논리적 테스트를 수행 할 필요가 없습니다. - 감사합니다! –