2010-05-17 9 views
16

Ich benutze EXIT_FAILURE Makro, also muss ich stdlib.h oder cstdlib einschließen. Aber ich weiß nicht, was der Unterschied ist. Sollte ich cXXX Style-Header-Datei statt XXX.h verwenden?Was ist der Hauptunterschied zwischen stdlib.h und cstdlib in C++?

Vielen Dank.

+0

Mögliches Duplikat [Was ist der Unterschied zwischen cstdlib und stdlib.h ist?] (http://stackoverflow.com/questions/2900785/whats-the-difference-between-cstdlib-and-stdlib-h) –

+0

prüfen meine aktualisierte Antwort hier. http://stackoverflow.com/questions/13889467/should-i-include-xxxx-h-or-cxxxx-in-c-programs/43016708#43016708 – 0xDEFACED

Antwort

17

Als EXIT_FAILURE ist ein Makro, es macht keinen Unterschied, die Sie enthalten. Die cstdlib Version werden die Namen aller Funktionen in den std Namespace setzen, so können Sie sagen Dinge wie:

std::exit(0); 

aber als Makros Namespaces nicht respektieren, man kann nicht sagen:

std::EXIT_FAILURE 
+0

Danke, aber ich kann noch nennen 'exit (EXIT_FAILURE)' ohne 'std ::' wenn ich 'cstdlib' einschließe. – Brian

+0

@ Brian Ja, die Exit-Funktion sowohl in dem globalen und den std Namensraum sein, –

+0

Außerdem sind einige Überlastungen erklärt mit [Konstantheit Problem der strtol()] zu behandeln (http://www.cpptalk.net/strtol- const-ness-Problem-vt54984.html) und ähnliche Probleme. –

25

<cstdlib> ist nur <stdlib.h> im Namespace std verpackt. Sie sollten <cstdlib> verwenden, um Ihren globalen Namespace sauber zu halten. out

Verwandte Themen