我正在构建最新的跨平台 OS X 版本dcraw.c我在 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 但不太知道如何定义。
Q:谁能提供在 dcraw.c 中使用的 strnlen 的工作定义吗?
我的 gcc 编译命令是这样的:
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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)