aboutsummaryrefslogtreecommitdiffstats
path: root/src/util/macros.h
diff options
context:
space:
mode:
authorEric Engestrom <[email protected]>2019-06-19 12:47:19 +0100
committerEric Engestrom <[email protected]>2019-07-31 09:41:05 +0100
commitabc226cf41574454c79477c217e60e8ff1fddfad (patch)
tree4c01a31ebe12a2a03bef6c7902a4d0ca400110ce /src/util/macros.h
parentab9c76769ad070490434aa7104d11958e1fc49d4 (diff)
tree-wide: replace MAYBE_UNUSED with ASSERTED
Suggested-by: Jason Ekstrand <[email protected]> Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/util/macros.h')
-rw-r--r--src/util/macros.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/util/macros.h b/src/util/macros.h
index fb0d154370a..86585f609da 100644
--- a/src/util/macros.h
+++ b/src/util/macros.h
@@ -230,13 +230,30 @@ do { \
# endif
#endif
+/**
+ * UNUSED marks variables (or sometimes functions) that have to be defined,
+ * but are sometimes (or always) unused beyond that. A common case is for
+ * a function parameter to be used in some build configurations but not others.
+ * Another case is fallback vfuncs that don't do anything with their params.
+ *
+ * Note that this should not be used for identifiers used in `assert()`;
+ * see ASSERTED below.
+ */
#ifdef HAVE_FUNC_ATTRIBUTE_UNUSED
#define UNUSED __attribute__((unused))
#else
#define UNUSED
#endif
-#define MAYBE_UNUSED UNUSED
+/**
+ * Use ASSERTED to indicate that an identifier is unused outside of an `assert()`,
+ * so that assert-free builds don't get "unused variable" warnings.
+ */
+#ifdef NDEBUG
+#define ASSERTED UNUSED
+#else
+#define ASSERTED
+#endif
#ifdef HAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT
#define MUST_CHECK __attribute__((warn_unused_result))
@@ -261,7 +278,7 @@ do { \
*/
#define ASSERT_BITFIELD_SIZE(STRUCT, FIELD, MAXVAL) \
do { \
- MAYBE_UNUSED STRUCT s; \
+ ASSERTED STRUCT s; \
s.FIELD = (MAXVAL); \
assert((int) s.FIELD == (MAXVAL) && "Insufficient bitfield size!"); \
} while (0)