C++代码运行时缺少标题,为什么?

New*_*ewb 1 c++ header std

我才意识到,我应该包括#include<cstdlib>要求abs()abs()功能.

 #include<iostream>
    using namespace std;
    int main()
    {
        int result;
        result = abs(-10);
        cout << result << "\n";
        return 0;

    }
Run Code Online (Sandbox Code Playgroud)

为什么这段代码仍然有效,即使我忘记了重要的标题(#include<cstdlib>)?

atz*_*tzz 8

那是因为iostream间接包含了定义abs().标准允许它,但不应该依赖它,因为它依赖于实现(即您的代码可能无法在其他编译器上编译).

  • 换句话说,只需包含#include <cstdlib>以避免将来出现问题,感谢atzz. (2认同)