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;
```
This commit is contained in:
Petr Ledvina 2015-01-29 14:56:21 +01:00
parent f9f40fb98f
commit fd355caca6
2 changed files with 28 additions and 28 deletions

View File

@ -18,11 +18,11 @@
#pragma once #pragma once
#ifdef INVERTER #ifdef INVERTER
#define INVERTER_OFF digitalLo(INVERTER_GPIO, INVERTER_PIN); #define INVERTER_OFF digitalLo(INVERTER_GPIO, INVERTER_PIN)
#define INVERTER_ON digitalHi(INVERTER_GPIO, INVERTER_PIN); #define INVERTER_ON digitalHi(INVERTER_GPIO, INVERTER_PIN)
#else #else
#define INVERTER_OFF ; #define INVERTER_OFF do {} while(0)
#define INVERTER_ON ; #define INVERTER_ON do {} while(0)
#endif #endif
void initInverter(void); void initInverter(void);

View File

@ -19,49 +19,49 @@
// Helpful macros // Helpful macros
#ifdef LED0 #ifdef LED0
#define LED0_TOGGLE digitalToggle(LED0_GPIO, LED0_PIN); #define LED0_TOGGLE digitalToggle(LED0_GPIO, LED0_PIN)
#ifndef LED0_INVERTED #ifndef LED0_INVERTED
#define LED0_OFF digitalHi(LED0_GPIO, LED0_PIN); #define LED0_OFF digitalHi(LED0_GPIO, LED0_PIN)
#define LED0_ON digitalLo(LED0_GPIO, LED0_PIN); #define LED0_ON digitalLo(LED0_GPIO, LED0_PIN)
#else #else
#define LED0_OFF digitalLo(LED0_GPIO, LED0_PIN); #define LED0_OFF digitalLo(LED0_GPIO, LED0_PIN)
#define LED0_ON digitalHi(LED0_GPIO, LED0_PIN); #define LED0_ON digitalHi(LED0_GPIO, LED0_PIN)
#endif // inverted #endif // inverted
#else #else
#define LED0_TOGGLE #define LED0_TOGGLE do {} while(0)
#define LED0_OFF #define LED0_OFF do {} while(0)
#define LED0_ON #define LED0_ON do {} while(0)
#endif #endif
#ifdef LED1 #ifdef LED1
#define LED1_TOGGLE digitalToggle(LED1_GPIO, LED1_PIN); #define LED1_TOGGLE digitalToggle(LED1_GPIO, LED1_PIN)
#ifndef LED1_INVERTED #ifndef LED1_INVERTED
#define LED1_OFF digitalHi(LED1_GPIO, LED1_PIN); #define LED1_OFF digitalHi(LED1_GPIO, LED1_PIN)
#define LED1_ON digitalLo(LED1_GPIO, LED1_PIN); #define LED1_ON digitalLo(LED1_GPIO, LED1_PIN)
#else #else
#define LED1_OFF digitalLo(LED1_GPIO, LED1_PIN); #define LED1_OFF digitalLo(LED1_GPIO, LED1_PIN)
#define LED1_ON digitalHi(LED1_GPIO, LED1_PIN); #define LED1_ON digitalHi(LED1_GPIO, LED1_PIN)
#endif // inverted #endif // inverted
#else #else
#define LED1_TOGGLE #define LED1_TOGGLE do {} while(0)
#define LED1_OFF #define LED1_OFF do {} while(0)
#define LED1_ON #define LED1_ON do {} while(0)
#endif #endif
#ifdef LED2 #ifdef LED2
#define LED2_TOGGLE digitalToggle(LED2_GPIO, LED2_PIN); #define LED2_TOGGLE digitalToggle(LED2_GPIO, LED2_PIN)
#ifndef LED2_INVERTED #ifndef LED2_INVERTED
#define LED2_OFF digitalHi(LED2_GPIO, LED2_PIN); #define LED2_OFF digitalHi(LED2_GPIO, LED2_PIN)
#define LED2_ON digitalLo(LED2_GPIO, LED2_PIN); #define LED2_ON digitalLo(LED2_GPIO, LED2_PIN)
#else #else
#define LED2_OFF digitalLo(LED2_GPIO, LED2_PIN); #define LED2_OFF digitalLo(LED2_GPIO, LED2_PIN)
#define LED2_ON digitalHi(LED2_GPIO, LED2_PIN); #define LED2_ON digitalHi(LED2_GPIO, LED2_PIN)
#endif // inverted #endif // inverted
#else #else
#define LED2_TOGGLE #define LED2_TOGGLE do {} while(0)
#define LED2_OFF #define LED2_OFF do {} while(0)
#define LED2_ON #define LED2_ON do {} while(0)
#endif #endif
void ledInit(void); void ledInit(void);