Immediate-Mode-UI / Immediate-Mode-UI/Nuklear

Some warning in Win10 for MSYS2 mingw64 about warning: ISO C90 does not support 'long long' [-Wlong-long]

Open
#847 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
11.4k
Forks
686
Avg merge
4d 1h
Merged PRs (30d)
3

Description

When I make /demo/sdl_opengl3:

` make
rm -f bin/demo.exe
cc main.c -std=c89 -Wall -Wextra -pedantic -DSDL_DISABLE_IMMINTRIN_H -o bin/demo.exe -lmingw32 -lSDL2main -lSDL2 -lopengl32 -lm -lGLU32 -lGLEW32
../../nuklear.h: In function 'nk_memset':
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6884:14: note: in expansion of macro 'NK_PTR_TO_UINT'
6884 | if ((t = NK_PTR_TO_UINT(dst) & nk_wmask) != 0) {
| ^~~~~~~~~~~~~~
../../nuklear.h: In function 'nk_buffer_align':
../../nuklear.h:6003:37: warning: ISO C90 does not support 'long long' [-Wlong-long]
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6017:6: note: in expansion of macro 'NK_UINT_TO_PTR'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:8557:22: note: in expansion of macro 'NK_ALIGN_PTR'
8557 | memory = NK_ALIGN_PTR(unaligned, align);
| ^~~~~~~~~~~~
In file included from main.c:25:
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6003:55: note: in definition of macro 'NK_UINT_TO_PTR'
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^
../../nuklear.h:6017:22: note: in expansion of macro 'NK_PTR_TO_UINT'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:8557:22: note: in expansion of macro 'NK_ALIGN_PTR'
8557 | memory = NK_ALIGN_PTR(unaligned, align);
| ^~~~~~~~~~~~
../../nuklear.h:6003:37: warning: ISO C90 does not support 'long long' [-Wlong-long]
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6019:6: note: in expansion of macro 'NK_UINT_TO_PTR'
6019 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:8566:22: note: in expansion of macro 'NK_ALIGN_PTR_BACK'
8566 | memory = NK_ALIGN_PTR_BACK(unaligned, align);
| ^~~~~~~~~~~~~~~~~
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6003:55: note: in definition of macro 'NK_UINT_TO_PTR'
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^
../../nuklear.h:6019:22: note: in expansion of macro 'NK_PTR_TO_UINT'
6019 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:8566:22: note: in expansion of macro 'NK_ALIGN_PTR_BACK'
8566 | memory = NK_ALIGN_PTR_BACK(unaligned, align);
| ^~~~~~~~~~~~~~~~~
../../nuklear.h: In function 'nk_command_buffer_push':
../../nuklear.h:6003:37: warning: ISO C90 does not support 'long long' [-Wlong-long]
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6017:6: note: in expansion of macro 'NK_UINT_TO_PTR'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:9261:14: note: in expansion of macro 'NK_ALIGN_PTR'
9261 | memory = NK_ALIGN_PTR(unaligned, align);
| ^~~~~~~~~~~~
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6003:55: note: in definition of macro 'NK_UINT_TO_PTR'
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^
../../nuklear.h:6017:22: note: in expansion of macro 'NK_PTR_TO_UINT'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:9261:14: note: in expansion of macro 'NK_ALIGN_PTR'
9261 | memory = NK_ALIGN_PTR(unaligned, align);
| ^~~~~~~~~~~~
../../nuklear.h: In function 'nk_font_baker':
../../nuklear.h:6003:37: warning: ISO C90 does not support 'long long' [-Wlong-long]
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6017:6: note: in expansion of macro 'NK_UINT_TO_PTR'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16962:36: note: in expansion of macro 'NK_ALIGN_PTR'
16962 | baker = (struct nk_font_baker*)NK_ALIGN_PTR(memory, nk_baker_align);
| ^~~~~~~~~~~~
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6003:55: note: in definition of macro 'NK_UINT_TO_PTR'
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^
../../nuklear.h:6017:22: note: in expansion of macro 'NK_PTR_TO_UINT'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16962:36: note: in expansion of macro 'NK_ALIGN_PTR'
16962 | baker = (struct nk_font_baker*)NK_ALIGN_PTR(memory, nk_baker_align);
| ^~~~~~~~~~~~
../../nuklear.h:6003:37: warning: ISO C90 does not support 'long long' [-Wlong-long]
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6017:6: note: in expansion of macro 'NK_UINT_TO_PTR'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16963:47: note: in expansion of macro 'NK_ALIGN_PTR'
16963 | baker->build = (struct nk_font_bake_data*)NK_ALIGN_PTR((baker + 1), nk_build_align);
| ^~~~~~~~~~~~
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6003:55: note: in definition of macro 'NK_UINT_TO_PTR'
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^
../../nuklear.h:6017:22: note: in expansion of macro 'NK_PTR_TO_UINT'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16963:47: note: in expansion of macro 'NK_ALIGN_PTR'
16963 | baker->build = (struct nk_font_bake_data*)NK_ALIGN_PTR((baker + 1), nk_build_align);
| ^~~~~~~~~~~~
../../nuklear.h:6003:37: warning: ISO C90 does not support 'long long' [-Wlong-long]
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6017:6: note: in expansion of macro 'NK_UINT_TO_PTR'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16964:46: note: in expansion of macro 'NK_ALIGN_PTR'
16964 | baker->packed_chars = (stbtt_packedchar*)NK_ALIGN_PTR((baker->build + count), nk_char_al
ign);
| ^~~~~~~~~~~~
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6003:55: note: in definition of macro 'NK_UINT_TO_PTR'
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^
../../nuklear.h:6017:22: note: in expansion of macro 'NK_PTR_TO_UINT'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16964:46: note: in expansion of macro 'NK_ALIGN_PTR'
16964 | baker->packed_chars = (stbtt_packedchar*)NK_ALIGN_PTR((baker->build + count), nk_char_al
ign);
| ^~~~~~~~~~~~
../../nuklear.h:6003:37: warning: ISO C90 does not support 'long long' [-Wlong-long]
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6017:6: note: in expansion of macro 'NK_UINT_TO_PTR'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16965:40: note: in expansion of macro 'NK_ALIGN_PTR'
16965 | baker->rects = (struct stbrp_rect*)NK_ALIGN_PTR((baker->packed_chars + glyph_count), nk_
rect_align);
| ^~~~~~~~~~~~
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6003:55: note: in definition of macro 'NK_UINT_TO_PTR'
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^
../../nuklear.h:6017:22: note: in expansion of macro 'NK_PTR_TO_UINT'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16965:40: note: in expansion of macro 'NK_ALIGN_PTR'
16965 | baker->rects = (struct stbrp_rect*)NK_ALIGN_PTR((baker->packed_chars + glyph_count), nk_
rect_align);
| ^~~~~~~~~~~~
../../nuklear.h:6003:37: warning: ISO C90 does not support 'long long' [-Wlong-long]
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6017:6: note: in expansion of macro 'NK_UINT_TO_PTR'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16966:40: note: in expansion of macro 'NK_ALIGN_PTR'
16966 | baker->ranges = (stbtt_pack_range*)NK_ALIGN_PTR((baker->rects + glyph_count), nk_range_a
lign);
| ^~~~~~~~~~~~
../../nuklear.h:6004:39: warning: ISO C90 does not support 'long long' [-Wlong-long]
6004 | # define NK_PTR_TO_UINT(x) ((nk_size)(__PTRDIFF_TYPE__)(x))
| ^~~~~~~~~~~~~~~~
../../nuklear.h:6003:55: note: in definition of macro 'NK_UINT_TO_PTR'
6003 | # define NK_UINT_TO_PTR(x) ((void*)(__PTRDIFF_TYPE__)(x))
| ^
../../nuklear.h:6017:22: note: in expansion of macro 'NK_PTR_TO_UINT'
6017 | (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x) + (mask-1)) & ~(mask-1))))
| ^~~~~~~~~~~~~~
../../nuklear.h:16966:40: note: in expansion of macro 'NK_ALIGN_PTR'
16966 | baker->ranges = (stbtt_pack_range*)NK_ALIGN_PTR((baker->rects + glyph_count), nk_range_a
lign);
| ^~~~~~~~~~~~
In file included from main.c:68:
../../demo/common/overview.c: In function 'overview':
../../demo/common/overview.c:447:36: warning: format '%lu' expects argument of type 'long unsigned i
nt', but argument 3 has type 'size_t' {aka 'long long unsigned int'} [-Wformat=]
447 | sprintf(buffer, "%lu", sum);
| ~~^ ~~~
| | |
| | size_t {aka long long unsigned int}
| long unsigned int
| %llu
../../demo/common/overview.c:459:36: warning: format '%lu' expects argument of type 'long unsigned i
nt', but argument 3 has type 'size_t' {aka 'long long unsigned int'} [-Wformat=]
459 | sprintf(buffer, "%lu", sum);
| ~~^ ~~~
| | |
| | size_t {aka long long unsigned int}
| long unsigned int
| %llu
`

Contributor guide

Open the contributing guide

Research direction

Start in nuklear.h around the NK_UINT_TO_PTR and NK_PTR_TO_UINT macros at lines 6003-6004, then reproduce the report with make in demo/sdl_opengl3 using the shown C89 command. Trace how those macros are used by the alignment code and confirm the MSYS2 mingw64 build no longer emits the reported ISO C90 warning.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
desktop
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.