On Monday, 18 September 2017 at 02:04:49 UTC, bitwise wrote:
On Monday, 18 September 2017 at 00:12:49 UTC, Mike Parker wrote:
On Sunday, 17 September 2017 at 19:16:06 UTC, bitwise wrote:
[...]

I've been maintaining bindings to multiple C libraries (including Freetype 2 bindings) for 13 years now. I have never encountered an issue with an enum size mismatch. That's not to say I never will.

For which platforms?

I would have to actually go through the specs for each compiler of each platform to make sure before I felt comfortable accepting that int-sized enums were defacto standard.

I would be worried about iOS, for example.

The following code will run fine on Windows, but crash on iOS due to the misaligned access:

char data[8];
int i = 0xFFFFFFFF;
int* p = (int*)&data[1];
*p++ = i;
*p++ = i;
*p++ = i;

I remember this issue presenting due to a poorly written serializer I used once (no idea who wrote it ;) and it makes me wonder what kind of other subtle differences there may be.

I think there may be a few (clang and gcc?) different choices of compiler for Android NDK as well.

I know for certain that Derelict packages have been used on Windows, Linux, OS X, FreeBSD, and Android. I'm unsure about iOS. But I'm fairly confident that enums are int there just like they are everywhere else.


Reply via email to