Limit the Use of Pre-processor Directives: The C pre-processor is powerful, but unrestricted use of it can lead to code that is hard to understand and analyze. Limit its use to inclusion of header files and simple macro definitions. Avoid features such as token pasting, variable argument lists (ellipses), recursive macro calls, and macros expanded into incomplete syntactic units. The use of conditional compilation directives and complex macro definitions must also be kept to a minimum. These make the job of modeling more complicated because they have to be translated into the modeling notations which often do not have similar built-in capabilities.