#define FOO(bar) create_a_really_long_identifier name(some_function( \ bar1 + bar2), bar3, \ bar4); #define VNV_RECORD_CYCLES(m) do { \ uint16_t cyc_out = ((uint16_t )TMR4) - cyc_in; \ if (cyc_out < vnv_ticks[m].min) vnv_ticks[m].min = cyc_out; \ if (cyc_out > vnv_ticks[m].max) vnv_ticks[m].max = cyc_out; \ } while (0) #define multilinemacro do { (x+5); } while (0); \ printf("a multilinemacro"); \ printf("a multilinemacro2"); int main(int argc, char *argv[]) { int a, b; a = 1; /* stupid comment \\ */ b = 2; return(a+b); }