...
In this noncompliant code example, because the C standard library header <inttypes.h>
is specified to include <stdint.h>
, the name SIZE_MAX_SIZE
conflicts with a standard macro of the same name, used to denote the upper limit of size_t
. In addition, although the name INTFAST16_LIMIT_MAX
is not defined by the C standard library, it is a reserved identifier because it begins with the INT
prefix and ends with the _MAX
suffix (see the C Standard, 7.31.10).
Code Block | ||||
---|---|---|---|---|
| ||||
#include <inttypes.h> #include <stdio.h> static const int_fast16_t INTFAST16_LIMIT_MAX = 12000; void print_fast16(int_fast16_t val) { enum { SIZE_MAX_SIZE = 80 }; char buf[SIZE_MAX_SIZE]; if (INTFAST16_LIMIT_MAX < val) { sprintf(buf, "The value is too large"); } else { snprintf(buf, SIZE_MAX_SIZE, "The value is %" PRIdFAST16, val); } } |
...