• Is required?

    From Joe Bentley@21:1/5 to All on Tue Feb 16 07:03:40 2016
    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! ]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bo Persson@21:1/5 to Joe Bentley on Tue Feb 16 12:32:26 2016
    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


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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)