Я использую макрос EXIT_FAILURE, поэтому мне нужно включить stdlib.h или cstdlib. Но я не знаю, в чем разница. Должен ли я использовать заголовочный файл стиля cXXX, а не XXX.h?В чем основное отличие между stdlib.h и cstdlib в C++?
спасибо.
Я использую макрос EXIT_FAILURE, поэтому мне нужно включить stdlib.h или cstdlib. Но я не знаю, в чем разница. Должен ли я использовать заголовочный файл стиля cXXX, а не XXX.h?В чем основное отличие между stdlib.h и cstdlib в C++?
спасибо.
Поскольку EXIT_FAILURE - это макрос, он не имеет никакого значения, которое вы включаете. Версия cstdlib
поставит имена всех функций в std
пространства имен, так что вы можете сказать что-то вроде:
std::exit(0);
но макросы не уважают пространство имен, вы не можете сказать:
std::EXIT_FAILURE
Спасибо, но я все еще могу называть 'exit (EXIT_FAILURE)' без 'std ::', когда я включаю 'cstdlib'. – Brian
@Brian Да, функция выхода будет находиться как в глобальном, так и в пространстве имен std, – 2010-05-17 09:50:59
Кроме того, некоторые перегрузки объявлены для решения проблемы [constness strtol()] (http://www.cpptalk.net/strtol- const-ness-problem-vt54984.html) и аналогичные проблемы. –
<cstdlib>
всего лишь <stdlib.h>
, завернутый в пространство имен std
. Вы должны использовать <cstdlib>
, чтобы ваше глобальное пространство имен было чистым.
Возможный дубликат [В чем разница между cstdlib и stdlib.h?] (Http://stackoverflow.com/questions/2900785/whats-the-difference-between-cstdlib-and-stdlib-h) –
Отъезд мой обновленный ответ здесь. http://stackoverflow.com/questions/13889467/should-i-include-xxxx-h-or-cxxxx-in-c-programs/43016708#43016708 – 0xDEFACED