【问题标题】:error: ‘memset’ was not declared in this scope错误:未在此范围内声明“memset”
【发布时间】:2014-11-09 20:02:40
【问题描述】:

我正在尝试编译本页末尾提供的完整示例 8:http://www.physics.wisc.edu/~craigm/idl/cmpfit.html

但我收到此错误:错误:“memset”未在此范围内声明

我一直在寻找如何解决这个错误,我看到有人通过在代码头部添加#include <string.h> 来解决它。我试过了,但我仍然遇到同样的错误。

我在 Ubuntu 12.04 LTS 上使用 gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

我正在尝试编译:

g++ -o example example.cpp -lmpfit -lm

【问题讨论】:

  • 您需要添加 标头 - 如果您还没有这样做?另外,请执行此操作g++ -g -Wall example.cpp -o example.o -lmpfit -lm。请通过邮件的实际打印输出向我们展示您的工作情况memset
  • 是的,我已经添加了 。我仍然看到同样的错误。通过在编译顺序中添加 -g -Wall 我还得到了这个错误:example.cpp:59:10: warning: used variable 'pactual' [-Wunused-variable]
  • 该代码 sn-p 不会自行编译。您需要将其作为函数的一部分插入 - “示例 8”显示了一个非常完整的程序,它应该可以开箱即用地编译。
  • 你应该使用std::memset();
  • 我目前正在尝试编译的代码正是网站中示例 8 的代码。我只在头部添加了 #include 行。我得到的错误信息是:example.cpp: In function ‘int main(int, char**)’: example.cpp:66:34: error: ‘memset’ is not declared in this scope

标签: c++ compilation memset


【解决方案1】:

如果你使用 C,你应该包含 string.h

否则,如果你使用 C++,你应该使用 cstring

C: #include <string.h>

C++: #include <cstring>

【讨论】:

  • 如果你想使用::memset,你应该在C和C++中都使用#include &lt;string.h&gt;#include &lt;cstring&gt; 为您提供std::memset,如果它也使::memset 可用,那么它是偶然的。标准允许但不要求这样做。
  • 现在我同时包含#include 、#include 和std::memset。我仍然遇到同样的错误。
  • 请在 paste.bin 中给我们您程序的源代码。我会尝试在我的电脑上用 gcc 编译它。
  • 您好,代码正是出现在此网页末尾的“示例 8”:physics.wisc.edu/~craigm/idl/cmpfit.html。我刚刚添加了#include 和/或#include 并尝试使用“std::memset”而不是“memset”
  • 我添加了“#include ”并用gcc编译它没有错误。
【解决方案2】:

我将 gcc 更新为 gcc-4.9,只需在代码头部添加“#include”即可编译。然后我尝试使用 gcc-4.8 和 gcc-4.7,我再次能够毫无问题地编译代码。也许我以前的编译器(gcc-4.6)没有正确安装?¿。我将继续使用最新版本的 gcc。谢谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2015-06-23
    • 2010-10-02
    相关资源
    最近更新 更多