home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16010 < prev    next >
Encoding:
Text File  |  1992-11-04  |  1.7 KB  |  40 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!portal!dfuller
  3. From: dfuller@portal.hq.videocart.com (Dave Fuller)
  4. Subject: Re: Help.  (Unix C)
  5. Message-ID: <Bx8Cw8.5tB@portal.hq.videocart.com>
  6. Organization: VideOcart Inc.
  7. X-Newsreader: Tin 1.1 PL3
  8. References: <2214@sdrc.COM>
  9. Date: Thu, 5 Nov 1992 06:33:44 GMT
  10. Lines: 28
  11.  
  12. scjones@thor.sdrc.com (Larry Jones) writes:
  13. : An ANSI compiler will, quite properly, object to this code -- it is
  14. : neither correct nor portable.  The comparison function *must* be
  15. : defined with two "void *" arguments (or "char *" if your compiler is
  16. : too old to support "void *"); that's what qsort calls it with.  Some
  17. : implementations use the same representation for all pointer types and
  18. : on those implementations you can misdefine the function and it will
  19. : work, but this is not guaranteed and there are systems where it will
  20. : fail.  
  21.    First of all, i don't use an ANSI compiler except for about 20%
  22. of my code (the declaration of the function should have helped on that).
  23. But, even on an ANSI compiler this will work. void is used to take on 
  24. no predetermined meaning, or to actually mean return NOTHING from a 
  25. function if used as a declaration type. malloc returns void *, but it
  26. won't complain if you dont cast the return value and assign it to a 
  27. char *. Also, the strcmp()  function is used QUITE OFTEN in qsort.
  28. look at the definition for it though strcmp(const char*,const char*)
  29. it doesn't have void * declared as you say a routine that qsort calls
  30. *must* have.
  31.  
  32. And if the code were not portable, it compiles and works on a non-ansi
  33. compiler (and all of the ANSI ones i tried), so please take back the
  34. part where you say the code is not correct. it is.
  35.  
  36. Dave fuller
  37. dfuller@portal.hq.videocart.com
  38.  
  39.