If you're lucky enough to be using gcc's cpp preprocessor, I suggest you take a look at its powerful "variadic macros" extensions. Among other things, it will allow you to write elegant things like that: #ifdef DEBUG #define PRINTF(_X_,_ARGS_...) printf(_X_,## _ARGS_) #else #define PRINTF(_X_,_ARGS_...) do{}while(0) #endif /*...*/ void foo(void) { ... PRINTF("Debug print"); ... } This will both avoid breaking cc-mode's indentation scheme AND make the code look better (IMHO). The do{}while(0) statement does not generate warnings with gcc -Wall, I wonder if it fools lint also. There are other C preprocessors that also support variadic macros... (see manual) -- Laurent "Ola Nilsson" a écrit dans le message de news:87oeiz16lf.fsf@helmut.nilsson.homedns.org... > Hello, > > I'm working with code that contains a number of debug > macros. Typically the look like this: > > #ifdef DEBUG > #define DEB(x) x > #else > #define DEB(x) > #endif > > These are used in the code like this: > > void foo(void) > { > ... > DEB(printf("Debug print";) > ... > } > > > That is, in many places the semicolon is inside the macro not outside > (that would generate empty statements that lint would complain over). > > Now, my problem is that cc-mode wants to indent the next line, but I > would like to have int on the same indentation level as the DEB > line. How can I get this behaviour? Do I need to add regexps for the > DEB() types of macros? And in that case, where should I add them? > > Thanks for any help, > -- > /Ola Nilsson