[PATCH v2 1/1] MdePkg: Add STATIC_ASSERT macro


Vitaly Cheptsov
 

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D2048

Provide a macro for compile time assertions.
Equivalent to C11 static_assert macro from assert.h.

Signed-off-by: Vitaly Cheptsov <vit9696@...>
---
MdePkg/Include/Base.h | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h
index ce20b5f01dce..f85f7028a262 100644
--- a/MdePkg/Include/Base.h
+++ b/MdePkg/Include/Base.h
@@ -843,6 +843,17 @@ typedef UINTN *BASE_LIST;
#define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field))
#endif
=20
+///
+/// Portable definition for compile time assertions.
+/// Equivalent to C11 static_assert macro from assert.h.
+/// Takes condtion and error message as its arguments.
+///
+#ifdef _MSC_EXTENSIONS
+ #define STATIC_ASSERT static_assert
+#else
+ #define STATIC_ASSERT _Static_assert
+#endif
+
/**
Macro that returns a pointer to the data structure that contains a speci=
fied field of
that data structure. This is a lightweight method to hide information b=
y placing a
--=20
2.20.1 (Apple Git-117)

Join devel@edk2.groups.io to automatically receive all group messages.