Is <cstdlib> required?

142 views
Skip to first unread message

Joe Bentley

unread,
Feb 16, 2016, 8:10:16 AM2/16/16
to

Is the <cstdlib> header file required? I have noticed that in some
implementations it appears to be automatically included. Maybe it's picked
up by <iostream> or some other common header file, but I can't find any
reference on this. Does the "standard" have anything to say on its
inclusion by other header files?


--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]

Bo Persson

unread,
Feb 16, 2016, 1:40:17 PM2/16/16
to

On 2016-02-16 14:03, Joe Bentley wrote:
>
> Is the <cstdlib> header file required? I have noticed that in some
> implementations it appears to be automatically included. Maybe it's
picked
> up by <iostream> or some other common header file, but I can't find any
> reference on this. Does the "standard" have anything to say on its
> inclusion by other header files?
>
>

You should include the headers of the things you use. That's the simple
rule.

The standard says that any C++ header may include any other C++ header,
as needed. Relying on one header including some other header makes your
code non-portable, as the next compiler might include another set of
headers.

For <iostream> in particular, the standard makes an exception and
explicitly requires these includes:

#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>

Whether any of those in turn includes <cstdlib> is not specified.



Bo Persson
Reply all
Reply to author
Forward
0 new messages