在Mac OS X 10.6.8上的gcc-4.2.1中不存在strnlen – 如何定义它?

我正在构建最新的dcraw.c的跨平台OS X版本。我在OS X 10.6.8上执行此操作以获得PPC兼容性。 现在我的问题是strnlen似乎在最新版本的程序中使用,它在10.6.8上不存在,gcc给我这样的消息:

Undefined symbols for architecture i386: "_strnlen", referenced from: ... Undefined symbols for architecture ppc: "_strnlen", referenced from: ... 

所以,我想定义strnlen但不太清楚如何。

问:任何人都可以在dcraw.c中提供strnlen的工作定义吗?

我的gcc编译命令是这个btw:

 gcc -o dcraw -O4 -Wall -force_cpusubtype_ALL -mmacosx-version-min=10.4 -arch i386 -arch ppc dcraw.c -lm -DNODEPS 

strnlen是GNU扩展,也在POSIX(IEEE Std 1003.1-2008)中指定。 如果strnlen不可用(从10.7开始),请使用以下替换。

 // Use this if strnlen is missing. size_t strnlen(const char *str, size_t max) { const char *end = memchr (str, 0, max); return end ? (size_t)(end - str) : max; }