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

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

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

提前感谢您的帮助!

【问题讨论】:

    标签: c++ objective-c header memcpy realloc


    【解决方案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++ 标准库函数。虽然我认为如果我的答案被单独阅读而不是与另一个已经接受的答案一起阅读,我的意图并不明显。
    猜你喜欢
    • 2011-08-18
    • 2016-08-04
    • 1970-01-01
    • 2010-12-13
    • 2013-04-21
    • 1970-01-01
    • 2012-05-26
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多