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

时间:2010-03-24 04:38:08

标签: c++ gcc

我正在尝试在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)下编译得很好。

请告诉我我错过了什么。

2 个答案:

答案 0 :(得分:157)

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

答案 1 :(得分:124)

如果你遇到这样的问题,只需转到有问题的man page for the function,它就会告诉你缺少什么标题,例如

$ 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> / {{1 }} / <stdio.h> /等