[Proj] Modern C functions

Glynn Clements glynn at gclements.plus.com
Thu Feb 26 22:31:58 EST 2009

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.

The are specified by POSIX, but not by ANSI C (neither C89 nor C99).

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.

Also, bear in mind that the behaviour depends upon the locale; using
them for strings containing anything other than alphanumeric
characters is problematic.

Glynn Clements <glynn at gclements.plus.com>

More information about the Proj mailing list