22. Summary of Portability Recommendations

Port. Rec. 1
Avoid the direct use of pre-defined data types in declarations.
Port. Rec. 2
Do not assume that an int and a long have the same size.
Port. Rec. 3
Do not assume that an int is 32 bits long (it may be only 16 bits long).
Port. Rec. 4
Do not assume that a char is signed or unsigned.
Port. Rec. 5
Always set char to unsigned if 8-bit ASCII is used.
Port. Rec. 6
Be careful not to make type conversions from a `shorter' type to a `longer' one.
Port. Rec. 7
Do not assume that pointers and integers have the same size.
Port. Rec. 8
Use explicit type conversions for arithmetic using signed and unsigned values.
Port. Rec. 9
Do not assume that you know how an instance of a data type is represented in memory.
Port. Rec. 10
Do not assume that longs, floats, doubles or long doubles may begin at arbitrary addresses.
Port. Rec. 11
Do not depend on underflow or overflow functioning in any special way.
Port. Rec. 12
Do not assume that the operands in an expression are evaluated in a definite order.
Port. Rec. 13
Do not assume that you know how the invocation mechanism for a function is implemented.
Port. Rec. 14
Do not assume that an object is initialized in any special order in constructors.
Port. Rec. 15
Do not assume that static objects are initialized in any special order.
Port. Rec. 16
Do not write code which is dependent on the lifetime of a temporary object.
Port. Rec. 17
Avoid using shift operations instead of arithmetic operations.
Port. Rec. 18
Avoid pointer arithmetic.