Подтвердить что ты не робот

Какая разница между cstdlib и stdlib.h?

При написании кода на С++ существует какая-либо разница между:

#include <cstdlib>

и

#include <stdlib.h>

кроме первого, в основном содержащегося в пространстве имен std::?

Есть ли какая-либо причина, кроме стандартов и стиля кодирования, использовать один над другим?

4b9b3361

Ответ 1

Первый - это заголовок С++, а второй - заголовок C. Поскольку первое использует пространство имен, это будет предпочтительнее.

Ответ 2

Нет, кроме ситуации с пространством имен, они практически идентичны.

Ответ 3

Есть ли какая-либо иная причина, кроме стандартов и стиля кодирования, чтобы использовать один поверх другого?

Да. Тот факт, что stdlib.h устарел, является очень веской причиной, чтобы не использовать его. На самом деле он устарел в самом первом стандарте, вышедшем в 1998 году. Конечно, он все еще существовал в С++ 14 и, возможно, или даже, вероятно, в С++ 17 (у меня нет доступа к стандарту С++ 17), но поскольку он устарел, это сильный сигнал, что вы не должны его использовать. Может быть, риск удаления не очень высок, но зачем даже рисковать им при написании нового кода, когда его так легко избежать?

Из стандарта С++ 14:

Это устаревшие функции, где устаревшие определены как: Нормативные для текущей редакции Стандарта, но были определены как кандидаты на исключение из будущих редакций.

...

У вас должен быть довольно веский аргумент, чтобы использовать stdlib.h вместо cstdlib