#include <stdio.h> #include <string.h> #ifdef PROTOTYPE_INCOMPLET int f(); #endif #ifdef PROTOTYPE_COMPLET int f(void); #endif int main(void){ printf("%d\n",f("abc")); return 0; } int f(void){ return 42; }
$ gcc -std=c99 -Wall void.c -o void void.c: In function ‘main’: void.c:10:1: warning: implicit declaration of function ‘f’ [-Wimplicit-function-declaration] $ gcc -Wall -DPROTOTYPE_INCOMPLET void.c -o void $ gcc -Wall -DPROTOTYPE_COMPLET void.c -o void void.c: In function ‘main’: void.c:10:1: error: too many arguments to function
#include <stdio.h> int v1; int f(void){ static int v2; return v2++; } int main(void){ int v3; printf("v1=%d\n",v1); printf("v2=%d\n",f()); printf("encore v2=%d\n",f()); printf("v3=%d\n",v3); return 0; }
$ gcc -Wall init.c -o init init.c: In function ‘main’: init.c:9:7: warning: ‘v3’ is used uninitialized in this function [-Wuninitialized] $ ./init v1=0 v2=0 encore v2=1 v3=-1215623180