stdio.h not standard in C++?

前端 未结 4 524
感情败类
感情败类 2020-11-29 08:41

I know most compilers allow both:

#include 

//and

#include 

But someone argu

相关标签:
4条回答
  • 2020-11-29 09:06

    The C++ standard library explicitly contains the C standard library, so is an entirely legitimate part of C++. And if you are talking about using #include <stdio.h> in C++ code, then you shouldn't do that, cause that's C syntax, in C++ code, you should use always cstdio

    0 讨论(0)
  • 2020-11-29 09:18

    The C standard headers are included in the C++ standard library for compatibility.

    The difference is that identifiers in corresponding C++ headers must (also) be in std namespace, whereas identifiers in C headers must (also) be available in global namespace.

    In addition, the <c...> headers add overloads for functions like abs, pow etc.

    Also, C++ headers replace some C classification/comparison macros with overloaded functions.

    0 讨论(0)
  • 2020-11-29 09:22

    It's not true, because C++ main goal is backward compatibility with C. The only difference is that for

    #include <cstdio>
    

    all functions are in std namespace

    0 讨论(0)
  • 2020-11-29 09:27

    stdio.h is standard, but deprecated. Always prefer cstdio in C++.

    [n3290: C.3.1/1]: For compatibility with the Standard C library, the C++ standard library provides the 18 C headers (D.5), but their use is deprecated in C++.

    [n3290: D.5/3]: [ Example: The header <cstdlib> assuredly provides its declarations and definitions within the namespace std. It may also provide these names within the global namespace. The header <stdlib.h> assuredly provides the same declarations and definitions within the global namespace, much as in the C Standard. It may also provide these names within the namespace std. —end example ]

    0 讨论(0)
提交回复
热议问题