[ANNOUNCE] inputproto 1.4.1

Barton C Massey bart at cs.pdx.edu
Thu Feb 15 08:16:07 PST 2007


In message <45D47947.90302 at c3sl.ufpr.br> you wrote:
>   #define DevicePresence(dpy, type, _class)                       \
>       {                                                           \
> -        extern int_XiGetDevicePresenceNotifyEvent(Display *);   \
> +        extern int _XiGetDevicePresenceNotifyEvent(Display *);  \
>           type = _XiGetDevicePresenceNotifyEvent(dpy);            \
>           _class =  (0x10000 | _devicePresence);                  \
> 
> The question is: why the compiler does not emit an error here?

* In a nod to K&R C, ANSI C function declarations without a
  return type default to returning int.

* Function declarations only provide type information for
  later references to the function; if the declared function
  is never referenced, no loader symbol is emitted, so it
  doesn't matter that the declared function never exists.

* The default for functions that are called with no previous
  declaration is to accept arguments of any type and return
  int.

* gcc -Wall will emit several useful warnings, but only without
  -Wno-implicit, which is usually turned on to shut up some
  noise. With -Wall -Wno-implicit it will only whine that
  the return type in the declaration defaults to int, which
  may well be how Peter found the typo.

C is not my favorite application programming language.  In
Nickle (http://nickle.org) we have no warnings, only errors:
this bug could not have occurred quite the way it did.

HTH.

	Bart




More information about the xorg mailing list