我应该为 memcpy 和 realloc 包含啥标题?

Posted

技术标签:

【中文标题】我应该为 memcpy 和 realloc 包含啥标题?【英文标题】:What header should I include for memcpy and realloc?我应该为 memcpy 和 realloc 包含什么标题? 【发布时间】:2011-01-18 00:42:19 【问题描述】:

我正在将一个项目移植到 iPhone 上,它使用了 reallocmemcpy,但没有找到。要包含的标题是什么?

这是一个混合了 Objective C 和 C++ 的项目,我开始迷路了。

提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

在 C 中:

#include <string.h> // memcpy
#include <stdlib.h> //realloc

在 C++ 中,删除 .h 和前缀 c。在 C++ 中,它们将被放置在 std 命名空间中,但也是全局的。

【讨论】:

您可以使用#ifdef __cplusplus / #else 自动为 C 或 C++ 包含正确的。 如果您不介意污染全局命名空间,string.hstdlib.h 在 C++ 中也同样有效,您可以继续使用 reallocmemcpy 而不是 std::reallocstd::memcpy 等,这似乎更符合原发帖人想要的。【参考方案2】:

在 C++ 中,使用 std::copy 比使用 C 的 memcpy 更惯用,尽管后者也同样有效。要获取std::copy,您需要#include &lt;algorithm&gt;

不过,没有直接的 C++ 等效于 realloc

【讨论】:

如果我可以通过评论将此答案标记为无用,我会这样做,因为它不正确。正如 GMan 所说,realloc 在 . 中找到 我并没有说不能在 C++ 中使用 C 标准库函数realloc(因为当然,C++ 标准库包含了整个 C89 标准库)。我说过没有像std::copymemcpy 那样包含realloc 的功能的新C++ 标准库函数。虽然我认为如果我的答案被单独阅读而不是与另一个已经接受的答案一起阅读,我的意图并不明显。

以上是关于我应该为 memcpy 和 realloc 包含啥标题?的主要内容,如果未能解决你的问题,请参考以下文章

realloc 和 memcpy 是如何工作的?

在啥情况下我应该在 C++ 中使用 memcpy 而不是标准运算符?

strcpy函数和memcpy函数有啥区别?它们各自使用时应该注意啥问题?

realloc 如何知道要复制多少?

memcpy在啥情况下会失败

memcpy在啥情况下会失败