The macros associated with the utilization of variadic functions implicitly use the parameterized type to determine how many bytes should be pulled for the argument. If the the type is inconsistent with how it is used, misinterpreted data or an alignment error (see EXP36-C. Do not cast to between pointers between objects or types with differing alignments) could result.
...