diff --git a/src/codegen/c.zig b/src/codegen/c.zig index 425663ad9c..589e2f17e0 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -26,15 +26,19 @@ fn renderType(ctx: *Context, header: *C.Header, writer: std.ArrayList(u8).Writer try writer.writeAll("zig_noreturn void"); }, .Void => try writer.writeAll("void"), + .Bool => try writer.writeAll("bool"), .Int => { if (T.tag() == .u8) { header.need_stdint = true; try writer.writeAll("uint8_t"); + } else if (T.tag() == .u32) { + header.need_stdint = true; + try writer.writeAll("uint32_t"); } else if (T.tag() == .usize) { header.need_stddef = true; try writer.writeAll("size_t"); } else { - return ctx.fail(ctx.decl.src(), "TODO implement int types", .{}); + return ctx.fail(ctx.decl.src(), "TODO implement int type {}", .{T}); } }, else => |e| return ctx.fail(ctx.decl.src(), "TODO implement type {}", .{e}), diff --git a/src/link/cbe.h b/src/link/cbe.h index 854032227d..f35c6b8fff 100644 --- a/src/link/cbe.h +++ b/src/link/cbe.h @@ -1,3 +1,12 @@ +#if __STDC_VERSION__ >= 199901L +// C99 or newer +#include +#else +#define bool unsigned char +#define true 1 +#define false 0 +#endif + #if __STDC_VERSION__ >= 201112L #define zig_noreturn _Noreturn #elif __GNUC__