macros multilignes dans un if
Bonjour,
Pour un projet où il faut écrire sur un lcd, j'ai écrit une fonction putchar et une fonction print qui appelle ce putchar.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #ifdef printf
#undef printf
#endif
#define printf(format, args ...) sprintf(VOSC_PrintBuf,format, ## args); print(VOSC_PrintBuf)
#ifdef puts
#undef puts
#endif
#define puts(toto) print(toto);putchar('\n')
if(!VOSC_JoystickDetected)
puts("No joystick detected");
else
puts("Joystick detected"); |
car comme la macro est remplacée par plusieurs lignes de code, il y a bien évidemment une erreur avant le else. J'ai bien essayé de mettre des accolades dans la macro, mais ça ne marche pas.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #ifdef printf
#undef printf
#endif
#define printf(format, args ...) {sprintf(VOSC_PrintBuf,format, ## args); print(VOSC_PrintBuf)}
#ifdef puts
#undef puts
#endif
#define puts(toto) {print(toto);putchar('\n')}
if(!VOSC_JoystickDetected)
puts("No joystick detected");
else
puts("Joystick detected"); |
Peut-être y a t-il une solution que je ne connais pas?
A+
Pfeuh