[sane-devel] Compilation warnings

Henning Meier-Geinitz henning@meier-geinitz.de
Sat, 16 Nov 2002 17:25:59 +0100


Hi,

This is a summary of the compilation warnings caused by gcc-3.0.4 on
Linux. Some of them are rather harmless (e.g. unused parameter), but
could be avoided nevertheless. Others (like comparison
unsigned/signed) may be an implementation bug. Please check.

The following two tables list the numbers of warnings per file:

./configure --disable-warnings:
      2	sanei_scsi.c
      2	sanei_usb.c
      4	agfafocus.c
      5	as6e.c
      2	avision.c
      8	canon-sane.c
     23	coolscan.c
      1	coolscan2.c
      1	dc25.c
     10	djpeg.c
     12	dmc.c
      2	epson_scsi.c
      2	hp-accessor.c
     53	hp-option.c
      2	hp-scl.c
      2	hp.c
      6	microtek.c
     25	mustek_pp.c
     12	nec.c
      3	net.c
      4	pie.c
      4	qcam.c
      1	ricoh-scsi.c
     12	s9036.c
      8	sharp.c
     14	sp15c.c
      1	sp15c-scsi.h
      1	sp15c.c
     11	st400.c
      4	tamarack.c
     13	umax_pp_low.c
      6	umax_pp.c
      2	dll-preload.c
      1	dll.c

Full log at:
http://www.meier-geinitz.de/sane/tmp/warnings-2002-11-16-gcc3.0-nowarn.log

With all warnings enabled, there are some more "false alerts". E.g.
the compiler complains about printf ("%p", pointer), where pointer
points to something other that void. Can this really make trouble?
Anyway, for completeness:

      2	../include/getopt.h
     22	sanei_wire.c
     22	sanei_scsi.c
      4	sanei_usb.c
      2	abaton.c
      4	agfafocus.c
      2	apple.c
      3	artec.c
      5	as6e.c
      2	avision.c
     10	canon-sane.c
      2	canon630u-common.c
      1	canon630u.c
      1	canon_pp-dev.c
     27	canon_pp.c
     18	coolscan-scsidef.h
     64	coolscan.c
      2	coolscan2.c
      1	dc25.c
     10	djpeg.c
      1	dc210.c
     17	dmc.c
      2	epson_scsi.c
      2	epson.c
     55	gt68xx_low.c
      2	gt68xx_gt6801.c
      2	gt68xx_gt6816.c
      4	hp-accessor.c
      4	hp-device.c
     55	hp-option.c
      2	hp-scl.c
      2	hp.c
      1	leo.c
      2	matsushita.c
     11	microtek.c
     65	microtek2.c
     33	mustek_pp.c
      3	mustek_usb_low.c
      4	mustek_usb_mid.c
     14	mustek_usb_high.c
     18	nec.c
     20	net.c
      4	pie.c
      2	plustek.c
      5	qcam.c
      1	ricoh-scsi.c
      2	ricoh.c
     12	s9036.c
      1	sceptre.c
     13	sharp.c
      4	snapscan-usb.c
     18	sp15c-scsi.h
     23	sp15c.c
      1	sp15c-scsi.h
      1	sp15c.c
     33	st400.c
      8	tamarack.c
      3	test-picture.c
     11	test.c
      1	teco1.c
      1	teco2.c
      1	teco3.c
      3	umax-usb.c
      1	umax.c
     14	umax_pp_low.c
      6	umax_pp.c
      1	umax1220u.c
      1	v4l.c
      1	dll.c
      2	dll-preload.c
      9	dll.c
      3	scanimage.c
      4	saned.c

Full log at:
http://www.meier-geinitz.de/sane/tmp/warnings-2002-11-16-gcc3.0-warn.log

Sorted by type of warning (gcc-3.0, warnings enabled):
    230	 warning: void format, [foo] type
    170	 warning: unused parameter `[foo]'
    115	 warning: cast discards qualifiers from pointer target type
     54	 warning: pointer targets in passing arg [foo] of `[bar]' differ in signedness
     37	 warning: pointer targets in initialization differ in signedness
     32	 warning: comparison between signed and unsigned
     19	 warning: passing arg [foo] of `[bar]' discards qualifiers from pointer target type
     11	 warning: unused variable `[foo]'
      5	 warning: signed and unsigned type in conditional expression
      5	 warning: function declaration isn't a prototype
      5	 warning: `[foo]' defined but not used
      4	 warning: ISO C forbids use of cast expressions as lvalues
      3	 warning: string length `[foo]' is greater than the length `509' ISO C89 compilers are required to support
      3	 warning: overflow in implicit constant conversion
      3	 warning: implicit declaration of function [foo]
      3	 warning: assignment discards qualifiers from pointer target type
      2	 warning: pointer targets in assignment differ in signedness
      2	 warning: passing arg [foo] of `[bar]' from incompatible pointer type
      2	 warning: missing initializer
      2	 warning: [foo] format, [bar] arg (arg [baz])
      1	 warning: too many arguments for format
      1	 warning: suggest explicit braces to avoid ambiguous `else'
      1	 warning: operation on `p' may be undefined
      1	 warning: assignment from incompatible pointer type

Bye,
  Henning