Ошибка компилятора: memset не была объявлена ​​в этой области

Я пытаюсь скомпилировать мою программу C в Ubuntu 9.10 (gcc 4.4.1).

Я получаю эту ошибку:

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).

Скажите, пожалуйста, что мне не хватает.

Ответ 1

Вы должны включить <string.h> (или его эквивалент С++, <cstring>).

Ответ 2

У вас есть такая проблема, просто перейдите на страницу man для данной функции, и она сообщит вам, какой заголовок отсутствует, например

$ 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);

Обратите внимание, что для С++ обычно предпочтительнее использовать соответствующие эквивалентные заголовки С++, <cstring>/<cstdio>/<cstdlib>/etc, а не C <string.h>/<stdio.h>/<stdlib.h>/etc.