gpt4 book ai didi

c++ - 为什么 rand() 编译时不包含 cstdlib 或使用命名空间 std?

转载 作者:行者123 更新时间:2023-12-04 17:06:15 26 4
gpt4 key购买 nike

根据我正在阅读的书,rand()需要 #include <cstdlib>在 C++ 中
但是,我能够编译以下使用 rand() 的代码没有 #include <cstdlib>也不是 using namespace std;在 Visual Studio 2015 中。
为什么这两个不需要编译?我应该包括 cstdlib 吗?

C++代码:

#include <iostream>

int main()
{
std::cout << rand() << std::endl;
}

最佳答案

有两个问题在起作用:

  • 标准库头文件可能包含其他标准库头文件。所以iostream可能包括 cstdlib直接或间接。
  • 具有 C 标准库等效项(例如 cstdlib)的头文件允许将 C 标准库名称带入全局命名空间,即在 std 之外命名空间(例如 rand 。)这是从 C++11 开始正式允许的,并且以前在很大程度上被容忍。
  • 关于c++ - 为什么 rand() 编译时不包含 cstdlib 或使用命名空间 std?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57677706/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com