#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