【问题标题】:Memcpy Error IncludeMemcpy 错误包括
【发布时间】:2016-09-05 16:57:26
【问题描述】:

我正在尝试在 Visual Studio 2013 中运行该程序 无法识别malloc 函数,如果不是cstring,我不知道应该包含什么标题

#include <cstring>

float x[4] = { 1, 1, 1, 1 };
float y[4] = { 2, 2, 2, 2 };

float* total = malloc(8 * sizeof(float)); // array to hold the result

memcpy(total,     x, 4 * sizeof(float)); // copy 4 floats from x to total[0]...total[3]
memcpy(total + 4, y, 4 * sizeof(float)); // copy 4 floats from y to total[4]...total[7]

【问题讨论】:

标签: c malloc


【解决方案1】:

如果你用谷歌搜索一个标准库函数,你通常可以找到一个页面,例如 this 一个,它会告诉你要包含哪个标题。

#include &lt;string.h&gt;

void *memcpy(void *dest, const void *src, size_t n);

【讨论】:

    【解决方案2】:

    memcpy 函数在 &lt;string.h&gt; 中声明。

    malloc 函数在 &lt;stdlib.h&gt; 中声明。

    您的系统应该有一些文档告诉您,对于每个库函数,您需要 #include 使用哪个标头(以及可能需要指定哪个库才能链接到它) . (如果您使用的是 Unix 或 Linux,我建议您使用手册页。)如果不这样做,网络搜索函数名称可能会为您提供信息(尽管也有很多 bad 信息那里)。

    对于 MS Windows,MSDN 有很多在线文档。例如,Google 搜索“MSDN malloc”会出现this page——不幸的是,它还提到了非标准的&lt;malloc.h&gt; 标头,但没有明确说明它是非标准的。

    在网络上搜索“man malloc”会为您提供可能更特定于 Unix 的结果,但对于标准函数来说应该不成问题。

    顺便说一句,&lt;cstring&gt; 是一个 C++ 头文件;它是 C 的 &lt;string.h&gt; 的 C++ 版本。如果要编写 C 代码,请确保将编译器作为 C 编译器调用。 (有时使用 .c 扩展名命名您的源文件就足够了。)

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 2019-10-08
      • 1970-01-01
      • 2016-03-29
      • 2011-08-27
      • 2011-10-14
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多