Free Wildebeest
Free Wildebeest

Reputation: 7572

What's the difference between cstdlib and stdlib.h?

When writing C++ code is there any difference between:

#include <cstdlib>

and

#include <stdlib.h>

other than the former being mostly contained within the std:: namespace?

Is there any reason other than coding standards and style to use one over the other?

Upvotes: 62

Views: 43398

Answers (3)

klutt
klutt

Reputation: 31459

Is there any reason other than coding standards and style to use one over the other?

Yes. The fact that stdlib.h is deprecated is a very good reason to not use it. It was actually deprecated in the very first standard that came 1998. Sure, it still existed in C++14, and possibly or even probably in C++17 (I don't have access to the C++17 standard) but since it is deprecated it is strong signal that you should not use it. Maybe the risk of removal isn't very high, but why even risk it while writing new code when it is so easy to avoid?

From C++14 standard:

These are deprecated features, where deprecated is defined as: Normative for the current edition of the Standard, but having been identified as a candidate for removal from future revisions.

...

You should have a pretty strong argument to use stdlib.h instead of cstdlib. Unless you can come up with one, use cstdlib.

Apart from that, you also have the practical matter that cstdlib is using a namespace, which is preferable in most cases.

Upvotes: 14

Jerry Coffin
Jerry Coffin

Reputation: 490768

No, other than the namespace situation, they're essentially identical.

Upvotes: 18

Brendan Long
Brendan Long

Reputation: 54312

The first one is a C++ header and the second is a C header. Since the first uses a namespace, that would seem to be preferable.

Upvotes: 55

Related Questions