Ошибка компилятора: memset не был объявлен в этой области - PullRequest
94 голосов
/ 24 марта 2010

Я пытаюсь скомпилировать свою программу на 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).

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

Ответы [ 2 ]

161 голосов
/ 24 марта 2010

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

127 голосов
/ 24 марта 2010

Когда бы вы ни столкнулись с такой проблемой, просто перейдите на справочную страницу для рассматриваемой функции , и она сообщит вам, какой заголовок вам не хватает, например,

$ 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> / и т. Д., А не C <string.h> / <stdio.h> / <stdlib.h> / и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...