$ cat 5929711.c static void A() { A(1, 2, 3); } void main() { A(); } $ gcc 5929711.c $ gcc -std=c89 5929711.c $ gcc -std=c89 -pedantic 5929711.c 5929711.c:5:6: warning: return type of ‘main’ is not ‘int’ $ gcc -std=c89 -pedantic -Wall 5929711.c 5929711.c:5:6: warning: return type of ‘main’ is not ‘int’ $ gcc -std=c89 -pedantic -Wall -Wextra 5929711.c 5929711.c:5:6: warning: return type of ‘main’ is not ‘int’ $ gcc -std=c89 -pedantic -Wall -Wextra -Wstrict-prototypes 5929711.c 5929711.c:1:13: warning: function declaration isn’t a prototype 5929711.c:5:6: warning: function declaration isn’t a prototype 5929711.c:5:6: warning: return type of ‘main’ is not ‘int’ $ gc89 5929711.cc c1: warnings being treated as errors 5929711.c:1:13: error: function declaration isn’t a prototype 5929711.c: In function ‘A’: 5929711.c:1:13: error: old-style function definition 5929711.c: At top level: 5929711.c:5:6: error: function declaration isn’t a prototype 5929711.c:5:6: error: return type of ‘main’ is not ‘int’ 5929711.c: In function ‘main’: 5929711.c:5:6: error: old-style function definition -------------------------------- $ alias gc89 alias gc89='/usr/bin/gcc -std=c89 \ -pedantic \ -Wall \ -Wextra \ -Wno-missing-field-initializers \ -Wformat=2 \ -Wswitch-default \ -Wswitch-enum \ -Wcast-align \ -Wpointer-arith \ -Wbad-function-cast \ -Wstrict-overflow=5 \ -Wstrict-prototypes \ -Winline \ -Wundef \ -Wnested-externs \ -Wcast-qual \ -Wshadow \ -Wunreachable-code \ -Wlogical-op \ -Wfloat-equal \ -Wstrict-aliasing=2 \ -Wold-style-definition \ -Werror \ -ggdb3 \ -O0 \ -fno-omit-frame-pointer \ -ffloat-store \ -fno-common \ -fstrict-aliasing \ -lm'