jivanpal/drat

Getting int-short assignment error

Closed this issue · 5 comments

Hi, after command make getting the next error

OBJECTS +++ include/drat/string/j.c +++ out/include/drat/string/j.o
gcc -std=c99 -D _GNU_SOURCE -Werror -Wall -Wextra -Wno-incompatible-pointer-types -Wno-multichar -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers -I./include -I/usr/local/Cellar/argp-standalone/1.3/include/ -c "include/drat/string/j.c" -o "out/include/drat/string/j.o"
include/drat/string/j.c:53:55: error: format specifies type 'unsigned short' but
      the argument has type 'int' [-Werror,-Wformat]
  ...extended fields:  %"PRIu16"\n", has_xfields ? xfields->xf_num_exts : 0);
                       ~~~~~~~~      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [out/include/drat/string/j.o] Error 1

Why it could be?
-GNU C Compiler (gcc)
-GNU Make (make)
-GNU Argp library (<argp.h>)
are installed. I have MacOs 10.15.7

Hi, thanks for reporting. This is due to the use of the ULL suffix in integer constants, which is not portable. This has been fixed in the global-arguments branch, which should be merged soon, by using the UINT64_C() macro instead, so I will close this.

Apologies, I thought this was the aforementioned issue which has already been fixed, but it appears specific to your build environment, as I cannot reproduce the issue on main. This should be fixed by changing 0 at the end of the problematic line to UINT16_C(0), including <stdint.h> for the macro. I have made this change in #27, please do git checkout port-test && make to see if this change works for you. Out of interest, to see where this incompatibility arises, what is your build environment (OS, hardware, etc.)?

Out of interest, to see where this incompatibility arises, what is your build environment (OS, hardware, etc.)?

Thanks for the reply! So I use MacOs 10.15.7 6-Core Intel Core i5 (3.7), 40Gb RAM, if it is really matter.
A pulled port-test, run it again, but still have an exception

gcc -std=c99 -D _GNU_SOURCE -Werror -Wall -Wextra -Wno-incompatible-pointer-types -Wno-multichar -Wno-unused-variable -Wno-unused-parameter -Wno-missing-field-initializers -I./include -I/usr/local/Cellar/argp-standalone/1.3/include/ -c "include/drat/string/j.c" -o "out/include/drat/string/j.o"
include/drat/string/j.c:54:55: error: format specifies type 'unsigned short' but
      the argument has type 'int' [-Werror,-Wformat]
  ...fields:  %"PRIu16"\n", has_xfields ? xfields->xf_num_exts : UINT16_C(0));
              ~~~~~~~~      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [out/include/drat/string/j.o] Error 1
➜  drat git:(port-test) 

Hope did everything right

Hmm, not sure why it doesn't like that. I've altered the code again, try git pull && make and report back, thanks.

Seems working now, at least no errors. You can close the issue.
Thank you so much)