2009-09-18 11 views
7

Je reçois une erreur en compilant un programme C++ dans lequel des lignes appelle "std :: system (SomeString)". Ce programme a été compilé il y a 3 ans, mais en le compilant aujourd'hui, je reçois une erreur indiquant que 'system' n'est pas membre de 'std'. Y a-t-il quelque chose que je dois importer pour utiliser std :: system, a-t-il été abandonné ou a-t-il été déplacé vers un autre fichier d'en-tête?C++ std :: system 'system' n'est pas membre de std

Répondre

25

std::system est (et a toujours été) dans <cstdlib>.

Il n'est pas défini par la norme C++ si les en-têtes standard se comprennent mutuellement, et si oui lesquels. Il est donc possible qu'il y a 3 ans, sur un compilateur différent ou sur une version différente du même compilateur, votre code ait fonctionné par accident, car l'un des en-têtes que vous incluez contient <cstdlib>. Sur le compilateur/version que vous utilisez maintenant, ce n'est pas le cas.

2

Assurez-vous que vous avez #include <cstdlib> dans votre code.

0

J'ai essayé. Cela fonctionne dans les deux sens dans vs2008 - "std :: system()" ou "system()". Et vous voulez inclure soit stdlib.h ou cstdlib

+1

Quelle nouvelle information vous répondez par rapport à celle acceptée? –