Three pieces of pre-C99 style that newer compilers no longer accept, reported
by a user building with gcc 14:
main() { -> int main (void)
int get_nints(...) -> static int get_nints(...)
printf("arr_%d,\n",a,a) -> printf("arr_%d,\n",a)
Implicit int was removed from the language in C99 and gcc 14 rejects it
outright rather than warning, which is what stopped the build:
error: return type defaults to 'int' [-Wimplicit-int]
get_nints is used only in this file, so static both silences the
missing-prototype warning and says what is true. The printf had two arguments
for one conversion.
This program generates the parser state table, so the old and new versions were
built side by side and their output compared: byte for byte identical, 1167625
bytes. The change only makes the generator compile; what it generates is
unchanged.