编译器错误:memset未在此范围内声明

我想在Ubuntu 9.10(gcc 4.4.1)中编译我的C程序。

我得到这个错误:

Rect.cpp:344: error: 'memset' was not declared in this scope 

但问题是我已经包含在我的cpp文件中:

 #include <stdio.h> #include <stdlib.h> 

和Ubuntu 8.04(gcc 4.2.4)相同的程序编译好。

请告诉我我错过了什么。

您应该包含<string.h> (或其C ++等效, <cstring> )。

Whevever你得到这样的问题只是去问题的function的手册页 ,它会告诉你什么头你缺less,例如

 $ man memset MEMSET(3) BSD Library Functions Manual MEMSET(3) NAME memset -- fill a byte string with a byte value LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <string.h> void * memset(void *b, int c, size_t len); 

请注意,对于C ++,通常最好使用合适的等效C ++头文件<cstring> / <cstdio> / <cstdlib> / etc,而不是C的<string.h> / <stdio.h> / <stdlib.h>等等