[Proj] Modern C functions
Gerald I. Evenden
geraldi.evenden at gmail.com
Fri Feb 27 07:19:44 PST 2009
On Thursday 26 February 2009 10:31:58 pm Glynn Clements wrote:
> Gerald I. Evenden wrote:
> > This is a quick probe of the programming types in this group.
> >
> > In finalizing Rel. 2.0 of geodesic and libgeodesy I ran across functions
> > under the <string.h> heading which are not in the typical (read Harrison
> > & Steele) library references: strcasecmp and strncasecmp. These are
> > noted in the Gnu man.3 as Posix 2001 standard routines. Obviously, these
> > two routines replace strcmp and strncmp and make comparisons case
> > independent.
> >
> > As soon as I became aware of them I have included them to eliminate the
> > nasty, nasty fact of having to shift when typing in WGS84 and can now use
> > ellps=wgs84.
> >
> > A little net browsing has yielded mixed results as to how well know these
> > functions are.
> >
> > Thus my question here is: do non-Gnu C compilers used by this audience
> > recognize these functions?
>
> It's not an issue for the compiler, but for the standard library.
IMHO, when discussing in a general context, the term "compiler" consists of
the entire process of generating an executable module and all it constituent
pieces. Including libraries.
> The are specified by POSIX, but not by ANSI C (neither C89 nor C99).
I have not concerned myself with "ANSI" in 15+ years as it seems superfluous
with so many other "standards" around.
> As others have already pointed out, Windows doesn't provide them.
> Also, gcc won't recognise them if you use -ansi and don't explicitly
> add the POSIX feature macros, e.g. -D_POSIX_SOURCE. I don't know
> whether uclibc has them.
The term "uclibc" does not make sense to me. I am only used to the
terminology libxxxxx. The "uc" prefix seems odd.
As for Windoze, I understand that there are non-M$ compilers available for
Windoze and these may not be so self righteous.
> Also, bear in mind that the behaviour depends upon the locale; using
> them for strings containing anything other than alphanumeric
> characters is problematic.
Seemingly the most common usage is for equality: strXcmp(a,b)==0. I see no
hassle with testing anything within the character set as long as str a and
str b are of the same character set type. But yes, there may be some
problems with some non-Latin alphabetics. However, in the context of a given
program and its control of the alphabet---like geodesic, proj, etc.---then we
are only testing against an in-house alphabet. If someone wants to convert a
program into using a non-latin alphabet, then the problem is transferred to
their domain.
--
The whole religious complexion of the modern world is due
to the absence from Jerusalem of a lunatic asylum.
-- Havelock Ellis (1859-1939) British psychologist
More information about the Proj
mailing list