Skip to content

Version 5.3.0: Cleanup, MISRA rules, MSVC-style Inn specifiers

Pre-release
Pre-release
Compare
Choose a tag to compare
@eyalroz eyalroz released this 11 Feb 09:31
· 112 commits to develop since this release

Changes since v5.2.0:

API and feature-set

  • #51 : Now optionally supporting MSVC-style specific-size specifiers: I8, I16, I32, I64 (e.g. %I64d or %I32u). These are not part of the C standard, but they are convenient and appropriate for size-specific types like int64_t or uint32_t. A preprocessor (and CMake) option controls whether or not this support is included in the library - and it defaults to OFF for C standard compliance.
  • #89 : Now using the same parameter names in printf.h as defined in the C standard (the parameter _types_were already standard-compliant, this is merely a cosmetic change).
  • #90 : Doyxgen comment improvements in printf.h.

Build configuration

  • The previous version, 5.2.0 was unfortunately released with an invalid version number (it was still 5.1.0); this time the version is set correctly in the CMakeLists.txt file.

Other changes

  • #74 : All functions in printf.c without declarations in printf.h are now declared static, and should not be symbols exported by the compiled object file.
  • Now Commenting-out additional code when PRINTF_EXPONENTIAL_SPECIFIERS is disabled.
  • #77 : Applied several MISRA coding guidelines rules. The printf()-family functions themselves are not in line with the MISRA guidelines, but this can't be helped, since they must conform to the standard library signatures.
  • #87 : Avoiding potential narrowing-conversion errors due to the int return type of printf()-family function vs the size_t type of the buffer range.
  • Various purely-internal changes (#88, #91

Testing code

  • #85 : No longer trying (and failing) to build the test suite when library function names are set to alias the standard library function names (since they conflict with catch).

Caveats

  • Still no special handling for denormals.