简体   繁体   中英

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?

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.

不,除了命名空间情况,它们基本相同。

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM