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

C++代码:

#include <iostream>

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

最佳答案

有两个问题在起作用:

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

    10-13 08:30