1
0
Fork 0

Merge branch 'size_t_specifier_support'

development v2.1.0
Marco Paland 7 years ago
commit ca6e7e5291

@ -115,6 +115,7 @@ The length sub-specifier modifies the length of the data type.
| (none) | int | unsigned int | | (none) | int | unsigned int |
| l | long int | unsigned long int | | l | long int | unsigned long int |
| ll | long long int | unsigned long long int | | ll | long long int | unsigned long long int |
| z | size_t int | unsigned size_t int |
## Compiler switches/defines ## Compiler switches/defines

@ -425,6 +425,10 @@ static size_t _vsnprintf(char* buffer, size_t buffer_len, const char* format, va
flags |= FLAGS_LONG_LONG; flags |= FLAGS_LONG_LONG;
format++; format++;
} }
if (*format == 'z') {
flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG);
format++;
}
// evaluate specifier // evaluate specifier
switch (*format) { switch (*format) {

@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// \author (c) Marco Paland (info@paland.com) // \author (c) Marco Paland (info@paland.com)
// 2017, PALANDesign Hannover, Germany // 2017-2018, PALANDesign Hannover, Germany
// //
// \license The MIT License (MIT) // \license The MIT License (MIT)
// //
@ -923,6 +923,21 @@ TEST_CASE("types", "[]" ) {
test::sprintf(buffer, "%llu", 18446744073709551615LLU); test::sprintf(buffer, "%llu", 18446744073709551615LLU);
REQUIRE(!strcmp(buffer, "18446744073709551615")); REQUIRE(!strcmp(buffer, "18446744073709551615"));
test::sprintf(buffer, "%zu", 2147483647UL);
REQUIRE(!strcmp(buffer, "2147483647"));
test::sprintf(buffer, "%zd", 2147483647UL);
REQUIRE(!strcmp(buffer, "2147483647"));
if (sizeof(size_t) == sizeof(long)) {
test::sprintf(buffer, "%zi", -2147483647L);
REQUIRE(!strcmp(buffer, "-2147483647"));
}
else {
test::sprintf(buffer, "%zi", -2147483647LL);
REQUIRE(!strcmp(buffer, "-2147483647"));
}
test::sprintf(buffer, "%b", 60000); test::sprintf(buffer, "%b", 60000);
REQUIRE(!strcmp(buffer, "1110101001100000")); REQUIRE(!strcmp(buffer, "1110101001100000"));

Loading…
Cancel
Save