From 83ded6995e0b834861291cd4e92468038827ffa4 Mon Sep 17 00:00:00 2001 From: Nic Barker Date: Fri, 10 Jan 2025 09:20:35 +1300 Subject: [PATCH] Add compiler error when attempting to create CLAY_STRING with non literal --- clay.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clay.h b/clay.h index 32b07b1..a86ff72 100644 --- a/clay.h +++ b/clay.h @@ -94,7 +94,10 @@ #define CLAY__STRING_LENGTH(s) ((sizeof(s) / sizeof((s)[0])) - sizeof((s)[0])) -#define CLAY_STRING(string) (CLAY__INIT(Clay_String) { .length = CLAY__STRING_LENGTH(string), .chars = (string) }) +#define CLAY__ENSURE_STRING_LITERAL(x) ("" x "") + +// Note: If an error led you here, it's because CLAY_STRING can only be used with string literals, i.e. CLAY_STRING("SomeString") and not CLAY_STRING(yourString) +#define CLAY_STRING(string) (CLAY__INIT(Clay_String) { .length = CLAY__STRING_LENGTH(CLAY__ENSURE_STRING_LITERAL(string)), .chars = (string) }) static uint8_t CLAY__ELEMENT_DEFINITION_LATCH;