J'essaie de compiler mon programme C sous Ubuntu 9.10 (gcc 4.4.1).
Je reçois cette erreur:
Rect.cpp:344: error: ‘memset’ was not declared in this scope
Mais le problème est que j'ai déjà inclus dans mon fichier cpp:
#include <stdio.h>
#include <stdlib.h>
Et le même programme compile bien sous Ubuntu 8.04 (gcc 4.2.4).
S'il vous plaît dites-moi ce qui me manque.
Vous devriez inclure <string.h>
_ (ou son équivalent C++, <cstring>
).
Lorsque vous rencontrez un problème comme celui-ci, accédez simplement à la page de manuel de la fonction en question et elle vous indiquera l’en-tête qui vous manque, par exemple.
$ 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);
Notez que pour C++, il est généralement préférable d'utiliser les en-têtes C++ équivalents appropriés, <cstring>
/<cstdio>
/<cstdlib>
/etc, plutôt que C's <string.h>
/<stdio.h>
/<stdlib.h>
/etc.