C ++ код работает с отсутствующим заголовком, почему? - PullRequest
1 голос
/ 23 декабря 2009

Я только что понял, что должен включить #include<cstdlib>, требуемый abs() для функции abs().

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

    }

Почему этот код все еще работает, хотя я забыл важный заголовок (#include<cstdlib>)?

1 Ответ

8 голосов
/ 23 декабря 2009

Это потому, что iostream косвенно включает определение для abs(). Это разрешено Стандартом, но на него не следует полагаться, поскольку оно зависит от реализации (т. Е. Ваш код может не компилироваться на некоторых других компиляторах).

...