This section contains some miscellaneous do's and don'ts. Don't change syntax via macro substitution. It makes the program unintelligible to all but the perpetrator. Don't use floating-point variables where discrete values are needed. Using a float for a loop counter is a great way to shoot yourself in the foot.
Compilers have bugs.
Common trouble spots include structure assignment and bitfields. You cannot generally predict which bugs a compiler has. You could write a program that avoids all constructs that are known broken on all compilers. You won't be able to write anything useful, you might still encounter bugs, and the compiler might get fixed in the meanwhile. Do not rely on automatic beautifiers.