Recommendations
Use parentheses for precedence of operation
Use parentheses within macros around variable names
Don't use the preprocessor for defining complex macros
Explicitly cast or convert variables
Avoid void* pointers when possible
Rules
Do not depend on order of evaluation within a sequence point