#define DEBUG_BREAK(a)\
if ((a)) \
{\
__asm int 3;\
}
Ho definito una macro come sopra, e provare a usarloc definire macro multilinea?
#include "test_define.h"
int main()
{
DEBUG_BREAK(1 == 1);
return 0;
}
Ma questo campione non verrà compilato. Il compilatore si lamenterebbe che la parentesi non è chiusa. Se aggiungo un altro }
alla fine del file sorgente, esso viene compilato.
Cosa c'è di sbagliato in questa macro?
Sembra probabile che non ci sia nulla di sbagliato nella macro, ma con qualche altra parte del codice. Tuttavia, macro icky come questo sono difficili da riprendere, quindi è quello che non va. Scrivi invece una funzione. – Lundin
Si prega di non contrassegnare le domande con C e C++ quando si fa riferimento solo a C nel titolo. –
Nulla è fatalmente sbagliato con il codice che si illustra, ma forse c'è un '}' mancante nel '# include'd test_define.h? –