web-dev-qa-db-fra.com

Erreur de compilation: memset n'a pas été déclaré dans cette étendue.

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.

96
michael

Vous devriez inclure <string.h> _ (ou son équivalent C++, <cstring>).

162
sth

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.

129
Paul R