【发布时间】:2011-01-18 00:42:19
【问题描述】:
我正在将一个项目移植到 iPhone 上,它使用了 realloc 和 memcpy,但没有找到。要包含的标题是什么?
这是一个混合了 Objective C 和 C++ 的项目,我开始迷路了。
提前感谢您的帮助!
【问题讨论】:
标签: c++ objective-c header memcpy realloc
我正在将一个项目移植到 iPhone 上,它使用了 realloc 和 memcpy,但没有找到。要包含的标题是什么?
这是一个混合了 Objective C 和 C++ 的项目,我开始迷路了。
提前感谢您的帮助!
【问题讨论】:
标签: c++ objective-c header memcpy realloc
在 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 等,这似乎更符合原发帖人想要的。
在 C++ 中,使用 std::copy 比使用 C 的 memcpy 更惯用,尽管后者也同样有效。要获取std::copy,您需要#include <algorithm>。
不过,没有直接的 C++ 等效于 realloc。
【讨论】:
realloc(因为当然,C++ 标准库包含了整个 C89 标准库)。我说过没有像std::copy 对memcpy 那样包含realloc 的功能的新C++ 标准库函数。虽然我认为如果我的答案被单独阅读而不是与另一个已经接受的答案一起阅读,我的意图并不明显。