我应该为 memcpy 和 realloc 包含啥标题?
Posted
技术标签:
【中文标题】我应该为 memcpy 和 realloc 包含啥标题?【英文标题】:What header should I include for memcpy and realloc?我应该为 memcpy 和 realloc 包含什么标题? 【发布时间】:2011-01-18 00:42:19 【问题描述】:我正在将一个项目移植到 iPhone 上,它使用了 realloc
和 memcpy
,但没有找到。要包含的标题是什么?
这是一个混合了 Objective C 和 C++ 的项目,我开始迷路了。
提前感谢您的帮助!
【问题讨论】:
【参考方案1】:在 C 中:
#include <string.h> // memcpy
#include <stdlib.h> //realloc
在 C++ 中,删除 .h
和前缀 c
。在 C++ 中,它们将被放置在 std
命名空间中,但也是全局的。
【讨论】:
您可以使用#ifdef __cplusplus
/ #else
自动为 C 或 C++ 包含正确的。
如果您不介意污染全局命名空间,string.h
和 stdlib.h
在 C++ 中也同样有效,您可以继续使用 realloc
、memcpy
而不是 std::realloc
, std::memcpy
等,这似乎更符合原发帖人想要的。【参考方案2】:
在 C++ 中,使用 std::copy
比使用 C 的 memcpy
更惯用,尽管后者也同样有效。要获取std::copy
,您需要#include <algorithm>
。
不过,没有直接的 C++ 等效于 realloc
。
【讨论】:
如果我可以通过评论将此答案标记为无用,我会这样做,因为它不正确。正如 GMan 所说,realloc 在realloc
(因为当然,C++ 标准库包含了整个 C89 标准库)。我说过没有像std::copy
对memcpy
那样包含realloc
的功能的新C++ 标准库函数。虽然我认为如果我的答案被单独阅读而不是与另一个已经接受的答案一起阅读,我的意图并不明显。以上是关于我应该为 memcpy 和 realloc 包含啥标题?的主要内容,如果未能解决你的问题,请参考以下文章
在啥情况下我应该在 C++ 中使用 memcpy 而不是标准运算符?