From c42ef12cc403f64013a9e29b457e01aa3b590080 Mon Sep 17 00:00:00 2001 From: Aditya Ghosh Date: Thu, 21 Aug 2025 17:29:42 +0530 Subject: [PATCH 1/3] Add NOB_ASSERT that doesnt depend on assert.h --- nob.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/nob.h b/nob.h index 8ef6c3f4..46b2f01d 100644 --- a/nob.h +++ b/nob.h @@ -176,10 +176,25 @@ #define NOBDEF #endif /* NOBDEF */ +#if defined(__GNUC__) || defined(__clang__) + #define NOB_CRASH() __builtin_trap() +#elif _MSC_VER + #define NOB_CRASH() __debugbreak() +#else + #define NOB_CRASH() (*(volatile int *)0 = 0) +#endif + +#ifndef NDEBUG #ifndef NOB_ASSERT -#include -#define NOB_ASSERT assert +#define NOB_ASSERT(expr) \ + (!(expr) \ + ? fprintf(stderr, "%s:%d: assertion `%s` failed\n", __FILE__, __LINE__, #expr), \ + NOB_CRASH() \ + : (void)0) #endif /* NOB_ASSERT */ +#else +#define NOB_ASSERT(expr) ((void)0) +#endif /* NDEBUG */ #ifndef NOB_REALLOC #include From 87d2989c580e4eae79cc2b3829240e0e54f9dcf0 Mon Sep 17 00:00:00 2001 From: Aditya Ghosh Date: Thu, 21 Aug 2025 18:06:02 +0530 Subject: [PATCH 2/3] Fix minor bug with checking for NDEBUG --- nob.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nob.h b/nob.h index 46b2f01d..59b9e490 100644 --- a/nob.h +++ b/nob.h @@ -184,16 +184,16 @@ #define NOB_CRASH() (*(volatile int *)0 = 0) #endif -#ifndef NDEBUG #ifndef NOB_ASSERT +#ifndef NDEBUG #define NOB_ASSERT(expr) \ (!(expr) \ ? fprintf(stderr, "%s:%d: assertion `%s` failed\n", __FILE__, __LINE__, #expr), \ NOB_CRASH() \ : (void)0) -#endif /* NOB_ASSERT */ #else #define NOB_ASSERT(expr) ((void)0) +#endif /* NOB_ASSERT */ #endif /* NDEBUG */ #ifndef NOB_REALLOC From d4d7b0d0e89232754be82f1b0bd6a6880325bce8 Mon Sep 17 00:00:00 2001 From: Aditya Ghosh Date: Thu, 21 Aug 2025 18:10:10 +0530 Subject: [PATCH 3/3] Fix comment --- nob.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nob.h b/nob.h index 59b9e490..ef4dc76c 100644 --- a/nob.h +++ b/nob.h @@ -193,8 +193,8 @@ : (void)0) #else #define NOB_ASSERT(expr) ((void)0) -#endif /* NOB_ASSERT */ #endif /* NDEBUG */ +#endif /* NOB_ASSERT */ #ifndef NOB_REALLOC #include