draves@harvard.ARPA (Richard Draves) (01/26/85)
Our 4.2bsd cc exhibits some remarkably strange behaviour when given duplicate declarations. For example: static int a; static int a; /* illegal */ static int f(); static int f(); /* legal */ extern int b; static int b; /* legal */ extern int g(); static int g(); /* illegal */ static int c; extern int c; /* legal */ static int h(); extern int h(); /* legal */ I can understand different behaviour for variables and functions, but the other situations I don't understand. Declaring a variable both extern and static is legal? But for functions it's illegal?? But it's legal when you switch the order??? Is this yet another bug in cc, or some strange feature of C? Rich -- "If I am conceited, it is the conceit of an amazing man who has never found any surpassing himself." Al-Mutanabbi