From 6a9f983b8da93158bf87b5b2969c0f5fcc813d5e Mon Sep 17 00:00:00 2001 From: Brougkr Date: Thu, 26 Mar 2026 04:10:54 -0400 Subject: [PATCH] =?UTF-8?q?fix(unreal):=20macOS=20build=20failure=20?= =?UTF-8?q?=E2=80=94=20Nil=20macro=20collision=20with=20Objective-C++?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On macOS/Apple platforms, Objective-C++ defines `Nil` as a macro (`#define Nil nullptr` in `objc/objc.h`). Unreal Engine compiles as Objective-C++ on these platforms, so `FSpacetimeDBUuid::Nil()` in `Builtins.h` collides with the macro and produces: error: expected member name or ';' after declaration specifiers; 'nullptr' is a keyword in Objective-C++ This adds `#pragma push_macro` / `#undef Nil` / `#pragma pop_macro` guards so the identifier is safe within the header, while restoring the original macro definition for downstream translation units. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../SpacetimeDbSdk/Public/Types/Builtins.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/sdks/unreal/src/SpacetimeDbSdk/Source/SpacetimeDbSdk/Public/Types/Builtins.h b/sdks/unreal/src/SpacetimeDbSdk/Source/SpacetimeDbSdk/Public/Types/Builtins.h index ff0bf8b1441..54a7049df0c 100644 --- a/sdks/unreal/src/SpacetimeDbSdk/Source/SpacetimeDbSdk/Public/Types/Builtins.h +++ b/sdks/unreal/src/SpacetimeDbSdk/Source/SpacetimeDbSdk/Public/Types/Builtins.h @@ -8,7 +8,14 @@ #include "Kismet/BlueprintFunctionLibrary.h" #include "Builtins.generated.h" - +// macOS/Objective-C++ defines Nil as a macro (#define Nil nullptr in objc/objc.h). +// Unreal Engine compiles as Objective-C++ on Apple platforms, causing FSpacetimeDBUuid::Nil() +// to fail with "expected member name or ';' after declaration specifiers". +#ifdef Nil +#define SPACETIMEDB_NIL_MACRO_SAVED +#pragma push_macro("Nil") +#undef Nil +#endif /**Compression algorithms supported by SpacetimeDB for data storage and transmission. */ UENUM(BlueprintType) @@ -1081,4 +1088,10 @@ class SPACETIMEDBSDK_API USpacetimeDBUuidLibrary : public UBlueprintFunctionLibr { return FSpacetimeDBUuid(Guid); } -}; \ No newline at end of file +}; + +// Restore macOS/Objective-C++ Nil macro +#ifdef SPACETIMEDB_NIL_MACRO_SAVED +#pragma pop_macro("Nil") +#undef SPACETIMEDB_NIL_MACRO_SAVED +#endif \ No newline at end of file