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