geoff@cs.warwick.ac.uk (Geoff Rimmer) (03/14/89)
In article <8903061953.AA25822@hector.homer.nj.att.com> ulysses!north@RESEARCH.ATT.COM writes: > gcc 1.34 -ansi -strict -pedantic > doesn't warn about functions that fail > to return a value, as in > > hector> cat t.c > > typedef struct x_t { > int i; > } x_t; > > x_t f() { > } > > hector> gcc -c -ansi -strict -pedantic t.c > hector> > > an x_t could just as well be an int. > i know many programmers are sloppy about this > but i'd think this combination of command > line options would trigger a warning at least. I don't believe there *is* a -strict switch to gcc v1.34. I just had a quick glance at gcc.c and the info file, and still couldn't find any mention of it. The switches that you should use are the -W flags, in particular, the -Wreturn-type switch. If you use -Wall (as I always do now!), you get all the warnings that GCC can find (except for one). `-Wimplicit' Warn whenever a function is implicitly declared. `-Wreturn-type' Warn whenever a function is defined with a return-type that defaults to `int'. Also warn about any `return' statement with no return-value in a function whose return-type is not `void'. `-Wunused' Warn whenever a local variable is unused aside from its declaration. `-Wcomment' Warn whenever a comment-start sequence `/*' appears in a comment. `-Wall' All of the above `-W' options combined. `-Wwrite-strings' Give string constants the type `const char[LENGTH]' so that copying the address of one into a non-`const' `char *' pointer will get a warning. These warnings will help you find at compile time code that can try to write into a string constant, but only if you have been very careful about using `const' in declarations and prototypes. Otherwise, it will just be a nuisance; this is why we did not make `-Wall' request these warnings. geoff% cat t.c typedef struct x_t { int i; } x_t; x_t f() { } geoff% gcc -c -ansi -pedantic t.c [ no warnings ] geoff% gcc -c -Wreturn-type -ansi -pedantic t.c t.c: In function f: t.c:10: warning: control reaches end of non-void function Geoff ------------------------------------------------------------ Geoff Rimmer, Computer Science, Warwick University, England. geoff@uk.ac.warwick.emerald "You can't eat a canvus or a piece of rock." "I dunno, you could if you were drunk enough and had enough ketchup" - Filthy, Rich and Catflap, 1986. ------------------------------------------------------------