使用gcc编译器时,未在此范围内声明'memcpy'

时间:2015-08-19 08:12:53

标签: c++ c gcc string.h cl

实际上我正试图用mingw编译一个c / c ++项目。实际上使用visual studio编译器编译了同一个项目。为此,我编写了一个makefile,到目前为止一切正常。

在编译期间,我收到有关使用string.h和stdio.h声明的函数的错误,如memcpy(),printf()...,并出现以下错误:

error: 'memcpy' was not declared in this scope

那是因为编译器没有找到这些功能。在visual studio中进行编译时,逻辑上没有出现此错误,因为编译器包含以下路径:

c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\

我现在的问题是: 我应该在makefile中做什么来告诉编译器使用" string.h"和" stdio.h"来自mingw的功能。我试图将include路径放在makefile中,如:

 INCLUDE_DIRS =\
 C:\MinGW\include

但没有效果。 此外,visual studio和string.h中的string.h和stdio.h与gcc使用的stdio.h之间存在差异。这可能是个问题吗?

1 个答案:

答案 0 :(得分:0)

正确的方法是将这些包含添加到使用其中定义的方法的源文件中。 但是如果你坚持通过makefile包含它,你可以使用 force include

Visual studio link.

  

在Visual Studio开发中设置此编译器选项   环境打开项目的“属性页”对话框。

     

打开项目属性页面。

     

单击C / C ++文件夹。

     

单击“高级”属性页。

     

修改Force Includes属性。

-include path_to_the_header使用var m = new MultiMap<string, int, bool>();

只需将此选项添加到编译命令行即可。祝你好运。