Zig / C++ Interop
12 days ago
- #Zig
- #C++
- #Interoperability
- Interoperability between Zig and C++ requires embedding data types from each language in the other's structs/classes.
- Use of opaque types with the same size/alignment as the original types allows embedding without full type definitions.
- Compile-time verification ensures size and alignment match between Zig and C++ types.
- A macro `SIZED_OPAQUE` defines opaque types with specified size and alignment.
- Example usage includes storing Zig's `std.http.Client` in a C++ class, with sizes varying by optimization mode.
- Pointers are used to pass data between languages, with functions defined to handle type conversions and data access.
- A new pattern using macros simplifies conversion between opaque and concrete types in C++, reducing manual casting and improving code clarity.