Learning to use the pre-processor, and use it well, is a good thing. However...
Quote Originally Posted by Egalestrenge View Post
You know what? Me either . I've written again the code and now it works...
This highlights an important point: debugging macros can be an incredibly complex and difficult process. The pre-processor is basically a fancy text substitution engine. Macro bugs, since they are done in the pre-processing stage, can lead to very strange compile-time errors that are difficult to pinpoint. If you don't absolutely need something to be a macro, then don't make it one. Just write a function that does what you want. Macro info is often not available when using a debugger, and even when it is, it's not always as intuitive as to what it's doing, compared to regular code.

And always remember, pre-processor code is still code. As much as possible, you should follow all the best practices you would for normal code: formatting/indentation, variable naming, and using the correct programming constructs. Salem pointed out to you that #else exists (there's also #elif, #ifdef, and a whole lot more). Make sure to use the right tool for the right job. Shameless self-plug for my blog-that-never-really-was: Monkey C, Monkey Do: Good Preprocessor Usage. Hopefully you find that useful.