Skip to content

fix: ensure consistent enum constant types across platforms#3

Closed
kajukitli wants to merge 1 commit intodenoland:mainfrom
kajukitli:fix-windows-enum-types
Closed

fix: ensure consistent enum constant types across platforms#3
kajukitli wants to merge 1 commit intodenoland:mainfrom
kajukitli:fix-windows-enum-types

Conversation

@kajukitli
Copy link
Contributor

On Windows MSVC, C enums are always int (i32), while on other platforms bindgen may generate them as u32 for non-negative enums. This causes type mismatches when code using the bindings expects u32.

Add .default_enum_style(bindgen::EnumVariation::Consts) and .translate_enum_integer_types(true) to ensure consistent types regardless of platform.

Fixes the Windows build errors in denoland/deno#32418

bindgen generates C enum constants as i32 on Windows MSVC (C enums are
always 'int') but u32 on Linux/macOS. This causes type mismatches when
consumers assign these constants to u32 fields.

Add .default_enum_style(bindgen::EnumVariation::Consts) and
.translate_enum_integer_types(true) to generate consistent u32 types
across all platforms.
@littledivy littledivy closed this Mar 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants