Use _Static_assert instead of static_assert for gnu99 toolchains - #2
Merged
Conversation
Boards building this library's C source directly under Arduino-ESP32's PlatformIO framework compile with -std=gnu99, where <assert.h> doesn't define the static_assert convenience macro (it's gated on __STDC_VERSION__ >= 201112L). _Static_assert is the underlying GCC/Clang keyword and is available as an extension in every C dialect, so this avoids needing a per-project build-flag workaround on every consuming board.
There was a problem hiding this comment.
Pull request overview
This PR improves C build compatibility for environments that compile the library under -std=gnu99 (notably Arduino-ESP32 + PlatformIO), where <assert.h> may not provide the static_assert convenience macro. It switches the compile-time checks to use _Static_assert, avoiding a consumer-side build-flag workaround.
Changes:
- Replace
static_assert(...)usages with_Static_assert(...)in the core C implementation. - Preserve the existing compile-time size/protocol invariants (magic number length, 32-bit float assumption).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
ari-kl
previously approved these changes
Jul 21, 2026
NathanBelza
approved these changes
Aug 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Boards building this library's C source directly under Arduino-ESP32's PlatformIO framework compile with -std=gnu99, where <assert.h> doesn't define the static_assert convenience macro (it's gated on STDC_VERSION >= 201112L). _Static_assert is the underlying GCC/Clang keyword and is available as an extension in every C dialect, so this avoids needing a per-project build-flag workaround on every consuming board.