Function arguments are passed by value. To make global changes in a function's argument requires that pointers to those arguments be passed to the function. An external variable must have only one definition, but can have many declarations. Once declared, a structure is just like a data type. A structure variable must be to the left of a .
C reads and writes streams of characters.
In a macro that takes arguments, surround every substitution of the argument with parentheses and the entire macro with parentheses. Conditional compilation is the best way to segregate non-portable code. All typedefs are evaluated by the compiler.