...
- one type is a signed integer type, the other type is the corresponding unsigned integer type, and the value is representable in both types;
- one type is pointer to void and the other is a pointer to a character type.
Non-Compliant Code Example (
...
type interpretation error)
The C99 printf()
function is implemented as a variadic function. This non-compliant code example swaps its null terminated byte string and integer parameters with respect to how they were specified in the format string. Consequently, the integer is interpreted as a pointer to a null terminated byte string and dereferenced. This will likely cause the program to abnormally terminate . Note that the error_message
pointer is likewise interpreted as an integer.
Code Block | ||
---|---|---|
| ||
char const *error_msg = "Error occurred"; /* ... */ printf("%s:%d", 15, error_msg); |
Compliant Solution (
...
type interpretation error)
This compliant solution is formatted so that the specifiers are consistent with their parameters.
...