gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:21 26 4
gpt4 key购买 nike

我正在构建最新 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,但不太清楚如何定义。

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

顺便说一句,我的 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 标准 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;
}

关于c++ - Mac OS X 10.6.8 上的 gcc-4.2.1 中不存在 strnlen - 如何定义它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32468480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com