HP C Programmer's Guide (92434-90009)

124 Chapter5
Programming for Portability
Practices to Avoid
Practices to Avoid
To make a program portable, you need to minimize machine dependencies. The following
are programming practices you should avoid to ensure portability:
Using dollar signs ($) in identifiers.
Using underscores (_) as the first character in an identifier.
Using sized enumerations.
Reliance on implicit expression evaluation order.
Making assumptions regarding storage allocation and layout.
Dependence on the number of significant characters in an identifier. Identifiers should
differ as early as possible in the name. ANSI C requires that the first 31 characters of
an internal name are significant. Only the first 6 characters of an external name are
required to be significant by ANSI C.
Dereferencing null pointers.
Dependence on pointer representation.
Dependence on being able to dereference a pointer to an object that is not correctly
aligned.
Dependence on the ability to store a pointer in a variable of type int.
Dependence on case distinctions in external names.
Dependence on char being signed or unsigned.
Dependence on bitwise operations in signed integers.
Dependence on bit-fields of any type except int, unsigned int, or signed int.
Dependence on the sign of the remainder in integer division.
Dependence on right shifts of negative signed values.
Dependence on more than six declarators modifying a basic type.
Dependence on values of automatic variables after a longjmp call when the values were
changed between the setjmp and longjmp calls.
Dependence on being able to call setjmp within an arbitrarily complex expression.
Dependence on file system characteristics.
Dependence on string literals being modifiable.
Dependence on extern declarations within a block being visible outside of the block.