Ответ 1
Вы должны включить <string.h>
(или его эквивалент С++, <cstring>
).
Я пытаюсь скомпилировать мою программу 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).
Скажите, пожалуйста, что мне не хватает.
Вы должны включить <string.h>
(или его эквивалент С++, <cstring>
).
У вас есть такая проблема, просто перейдите на страницу 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.