From fd355caca6b5118102af7bf676cc15620dba03c9 Mon Sep 17 00:00:00 2001 From: Petr Ledvina Date: Thu, 29 Jan 2015 14:56:21 +0100 Subject: [PATCH] Modify some macros so they evaluate to single statement Require macros to be followed with semicolon, empty version expands to dummy statement. Fixes dangling-else problem: ``` if(1) INVERTER_ON; else INVERTER_OFF; ``` --- src/main/drivers/inverter.h | 8 +++--- src/main/drivers/light_led.h | 48 ++++++++++++++++++------------------ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/main/drivers/inverter.h b/src/main/drivers/inverter.h index 81bd43295..017df613b 100644 --- a/src/main/drivers/inverter.h +++ b/src/main/drivers/inverter.h @@ -18,11 +18,11 @@ #pragma once #ifdef INVERTER -#define INVERTER_OFF digitalLo(INVERTER_GPIO, INVERTER_PIN); -#define INVERTER_ON digitalHi(INVERTER_GPIO, INVERTER_PIN); +#define INVERTER_OFF digitalLo(INVERTER_GPIO, INVERTER_PIN) +#define INVERTER_ON digitalHi(INVERTER_GPIO, INVERTER_PIN) #else -#define INVERTER_OFF ; -#define INVERTER_ON ; +#define INVERTER_OFF do {} while(0) +#define INVERTER_ON do {} while(0) #endif void initInverter(void); diff --git a/src/main/drivers/light_led.h b/src/main/drivers/light_led.h index 8f62bd5ab..cf6a2bea9 100644 --- a/src/main/drivers/light_led.h +++ b/src/main/drivers/light_led.h @@ -19,49 +19,49 @@ // Helpful macros #ifdef LED0 -#define LED0_TOGGLE digitalToggle(LED0_GPIO, LED0_PIN); +#define LED0_TOGGLE digitalToggle(LED0_GPIO, LED0_PIN) #ifndef LED0_INVERTED -#define LED0_OFF digitalHi(LED0_GPIO, LED0_PIN); -#define LED0_ON digitalLo(LED0_GPIO, LED0_PIN); +#define LED0_OFF digitalHi(LED0_GPIO, LED0_PIN) +#define LED0_ON digitalLo(LED0_GPIO, LED0_PIN) #else -#define LED0_OFF digitalLo(LED0_GPIO, LED0_PIN); -#define LED0_ON digitalHi(LED0_GPIO, LED0_PIN); +#define LED0_OFF digitalLo(LED0_GPIO, LED0_PIN) +#define LED0_ON digitalHi(LED0_GPIO, LED0_PIN) #endif // inverted #else -#define LED0_TOGGLE -#define LED0_OFF -#define LED0_ON +#define LED0_TOGGLE do {} while(0) +#define LED0_OFF do {} while(0) +#define LED0_ON do {} while(0) #endif #ifdef LED1 -#define LED1_TOGGLE digitalToggle(LED1_GPIO, LED1_PIN); +#define LED1_TOGGLE digitalToggle(LED1_GPIO, LED1_PIN) #ifndef LED1_INVERTED -#define LED1_OFF digitalHi(LED1_GPIO, LED1_PIN); -#define LED1_ON digitalLo(LED1_GPIO, LED1_PIN); +#define LED1_OFF digitalHi(LED1_GPIO, LED1_PIN) +#define LED1_ON digitalLo(LED1_GPIO, LED1_PIN) #else -#define LED1_OFF digitalLo(LED1_GPIO, LED1_PIN); -#define LED1_ON digitalHi(LED1_GPIO, LED1_PIN); +#define LED1_OFF digitalLo(LED1_GPIO, LED1_PIN) +#define LED1_ON digitalHi(LED1_GPIO, LED1_PIN) #endif // inverted #else -#define LED1_TOGGLE -#define LED1_OFF -#define LED1_ON +#define LED1_TOGGLE do {} while(0) +#define LED1_OFF do {} while(0) +#define LED1_ON do {} while(0) #endif #ifdef LED2 -#define LED2_TOGGLE digitalToggle(LED2_GPIO, LED2_PIN); +#define LED2_TOGGLE digitalToggle(LED2_GPIO, LED2_PIN) #ifndef LED2_INVERTED -#define LED2_OFF digitalHi(LED2_GPIO, LED2_PIN); -#define LED2_ON digitalLo(LED2_GPIO, LED2_PIN); +#define LED2_OFF digitalHi(LED2_GPIO, LED2_PIN) +#define LED2_ON digitalLo(LED2_GPIO, LED2_PIN) #else -#define LED2_OFF digitalLo(LED2_GPIO, LED2_PIN); -#define LED2_ON digitalHi(LED2_GPIO, LED2_PIN); +#define LED2_OFF digitalLo(LED2_GPIO, LED2_PIN) +#define LED2_ON digitalHi(LED2_GPIO, LED2_PIN) #endif // inverted #else -#define LED2_TOGGLE -#define LED2_OFF -#define LED2_ON +#define LED2_TOGGLE do {} while(0) +#define LED2_OFF do {} while(0) +#define LED2_ON do {} while(0) #endif void ledInit(void);