85 | | POSIX specifies that time_t is an integer type but does not specify its size. The underlying type might be "int", "long" or "long long", some systems might make it unsigned too. This makes it hard to portably print time_t values using printf-like APIs, as a mismatch between the format string and the actual time_t size can lead to crashes or bogus representations. The safest way is to print time_t values as long long, which is at least 64 bits wide: |
| 85 | POSIX specifies that time_t is an integer type but does not specify its size. The underlying type might be "int", "long" or "long long", some systems might make it unsigned too. This makes it hard to portably print time_t values using printf-like APIs, as a mismatch between the format string and the actual time_t size can lead to crashes or bogus representations. |
| 86 | |
| 87 | The safest way is to print time_t values as long long, which is at least 64 bits wide and thus does not cause y2038 problems. |
| 88 | |
| 89 | Similarly, POSIX specifies suseconds_t as a signed integer, but does not specify its size. Casting it as a long is enough. |
| 90 | |