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

C.O*_*.O. 5 c c++ macos gcc

我正在构建最新的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:
...
Run Code Online (Sandbox Code Playgroud)

所以,我想定义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
Run Code Online (Sandbox Code Playgroud)

Hel*_*rld 8

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;
}
Run Code Online (Sandbox Code Playgroud)