Mac Manson wrote: > > When recently adding the abbreviations snippet I encountered a problem with > > gcc -c -g -O2 -Wall handler.c > handler.c:62: conflicting types for `isname' > handler.h:25: previous declaration of `isname' > > so I looked into the h file and seen that it was making the isname a const > char > and the snippet used a plain char. I kind of fixed it by adding a const onto > the chars > in the snippet, but I get the following > > gcc -c -g -O2 -Wall handler.c > handler.c: In function `isname': > handler.c:68: warning: passing arg 1 of `strtok' discards `const' from > pointer target type > handler.c:72: warning: passing arg 1 of `free' discards `const' from pointer > target type > handler.c:75: warning: passing arg 1 of `free' discards `const' from pointer > target type > > When I compile and run, you can abbreviate words ok, and I haven't noticed > anything bad going on. > So is this a bad warning or not? Here is the complete code I've added YES! if you declare something as const the compiler/linker has the right to assume that it's never written to so it may make assumptions about it. strtok is definetly destructive, try man strtok and note: BUGS Never use this function. This function modifies its first argument. The identity of the delimiting character is lost. This function cannot be used on constant strings. so newlist and curtok should be just char *'s, this is why it duplicates the input strings. Although I'm never quite sure what isname is meant to achieve I've got 3 different versions floating around, I should really sit down and see where they're used and why. Chris +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/10/01 PDT