home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11719 < prev    next >
Encoding:
Text File  |  1992-07-29  |  2.3 KB  |  51 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!uunet.ca!geac!r-node!druid!darcy
  3. From: darcy@druid.uucp (D'Arcy J.M. Cain)
  4. Subject: Re: HIgher problems at hand. HELP!
  5. Message-ID: <1992Jul29.163026.9008@druid.uucp>
  6. Date: Wed, 29 Jul 1992 16:30:26 GMT
  7. References: <1992Jul27.212311.28125@zooid.guild.org> <1992Jul28.104059.4725@druid.uucp> <1992Jul29.031820.15906@zooid.guild.org>
  8. Organization: D'Arcy Cain Consulting
  9. Lines: 40
  10.  
  11. Ross Ridge <ross@zooid.guild.org> writes:
  12. >darcy@druid.uucp (D'Arcy J.M. Cain) writes:
  13. >>Except that the whole point is to prevent any warnings with full checking
  14. >>turned on.  Putting the define after the include would cause warnings
  15. >>when strstr was redefined. 
  16. >If strstr() is declared in <string.h> then why are we redefining here?
  17. >Wouldn't it already be in the standard library?
  18.  
  19. I have been slowly building up an entire standard library based on code
  20. from the net and my own additions and modifications.  As part of this I
  21. wrote my own string.h based on the ANSI standard.  Given that then I
  22. am in effect the implementor and there is no standard library until I
  23. compile it.  I also use parts of the project to add ANSI functionality
  24. to systems that I support.  I generally find I can simply replace the
  25. standard string.h with my own. (*)  Users can then add non-existent
  26. functions (Usually strerror(3)).  In those cases it is in the header
  27. but not the standard library.
  28.  
  29. >>Other than changing the language itself I don't believe there is a "right"
  30. >>way to code strstr(3).
  31. >What's wrong with "return (char *)s;"?
  32.  
  33. As I explained in previous posts the problem is more basic than that.  The
  34. strstr function and others claim to return a pointer to non-const space
  35. whereas in reality the pointer may very well be to const char.  A good
  36. compiler that checks that sort of thing will warn you no matter what you
  37. do in the function.  Everything you do (including simply ignoring the
  38. warning message or turning them off) is just a kluge.  "define const"
  39. is just my own kluge.
  40.  
  41. BTW this isn't true in C++ where you can do:
  42.  
  43. const char *strstr(const char *s, const char *wanted);
  44. char *strstr(char *s, const char *wanted);
  45.  
  46. -- 
  47. D'Arcy J.M. Cain (darcy@druid.com)  |
  48. D'Arcy Cain Consulting              |   There's no government
  49. Toronto, Ontario, Canada            |   like no government!
  50. +1 416 424 2871          DoD#0082   |
  51.