It is well known that the extensive use of preprocessors can lead to serious maintenance problems. However, these tools are still heavily used by developers and maintainers to implement software variants. Without adequate tools, understanding complex preprocessor files is a really tedious task. Problems are difficult to formulate and seem very specific. This paper shows that considering preprocessors abstract point of view can lead to surprising results. of abstractions considerably increases problem comprehension and solutions can be derived directly from existing techniques like slicing, program specialization or interprocedural data flow analysis. The preprocessor of the C language (CPP), is taken as a case study, and the functionalities of Champollion/APP, a tool for preprocessor maintenance, are briefly described.