gpt4 book ai didi

c - bzero() & bcopy() 与 memset() & memcpy()

转载 作者:IT老高 更新时间:2023-10-28 12:38:38 25 4
gpt4 key购买 nike

有什么理由使用非标准的 bzero()bcopy() 而不是 memset()在 Linux 环境中使用 memcpy()?我听到很多人说它们更适合 Linux 编译器,但没有看到比标准函数有任何优势。

它们是否比标准的更优化,或者它们是否有任何行为的特殊性,它们是首选的?

最佳答案

虽然 bzerobcopy 函数不是 ISO C(我假设您在将它们称为非标准时所说的实际标准),但它们一个 POSIX 标准的东西,尽管它们早于 ISO POSIX。

并注意使用"is"这个词 - 这些函数在 POSIX.1-2001 中已弃用,并在 POSIX.1-2008 中最终删除,以尊重 memsetmemcpymemmove。所以你最好尽可能使用标准的 C 函数。

如果您有 很多 代码使用它们,并且您不想全部更改(尽管您可能在某些时候应该) ,您可以使用以下快速替换:

// void bzero(void *s, size_t n);
#define bzero(s, n) memset((s), 0, (n))

// void bcopy(const void *s1, void *s2, size_t n);
#define bcopy(s1, s2, n) memmove((s2), (s1), (n))

关于c - bzero() & bcopy() 与 memset() & memcpy(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18330673/

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