Declarations Section 10.
Similar arguments apply when deciding between float and double .
These rules obviously don't apply if the address of a variable is taken and must have a particular type. Programmers interested in writing portable code should therefore insulate their 64-bit type needs behind appropriate typedefs. A similar problem, with a similar solution, can arise when attempting to declare a pair of typedef 'ed mutually referential structures. Non-int functions must be declared before they are called. A few very odd systems may require an explicit initializer to distinguish a definition from an external declaration.