2010-02-17 13 views
25

Je porte un projet sur l'iPhone et utilise realloc et memcpy qui ne sont pas trouvés. Quel est l'en-tête à inclure?Quel en-tête dois-je inclure pour memcpy et realloc?

C'est un projet qui mélange les objectifs C et C++ et je commence à être perdu.

Merci d'avance pour votre aide!

Répondre

35

En C:

#include <string.h> // memcpy 
#include <stdlib.h> //realloc 

En C++, supprimez le .h et le préfixe avec un c. En C++, ils seront placés dans l'espace de noms std, mais sont également globaux.

+0

Vous pouvez utiliser '#ifdef __cplusplus' /' # else' pour inclure automatiquement les corrects pour C ou C++. –

8

En C++, il est plus idiomatique d'utiliser std::copy que C memcpy, bien que ce dernier fonctionne aussi bien. Pour obtenir std::copy, vous devez #include <algorithm>.

Cependant, il n'y a pas d'équivalent C++ direct à realloc.

+2

Si je pouvais marquer cette réponse comme inutile avec un commentaire, je le ferais parce que c'est incorrect. Comme dit GMan, realloc se trouve dans . –

+5

Je n'ai pas dit qu'il n'est pas possible d'utiliser la fonction de bibliothèque standard C 'realloc' en C++ (puisque, bien sûr, la bibliothèque standard C++ inclut l'intégralité de la bibliothèque standard C89). J'ai dit qu'il n'y a pas une nouvelle fonction de bibliothèque standard C++ qui englobe la fonctionnalité de 'realloc' comme le fait' std :: copy' pour 'memcpy'. Bien que je suppose que mon intention n'est pas évidente si ma réponse est lue dans l'isolement par opposition à en conjonction avec l'autre, la réponse déjà acceptée. –