2009-12-23 3 views
1

abs() 함수에 대해 abs()이 필요로하는 #include<cstdlib>을 포함한다고 가정했습니다.C++ 코드가 누락 된 헤더와 함께 실행됩니다. 이유가 무엇입니까?

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

    } 

왜이 코드가 여전히 나는 중요한 헤더 (#include<cstdlib>)을 잊었더라도, 작동합니까?

+1

플랫폼, 컴파일러는 무엇입니까? –

+0

Win7Prof Visual C++ 2008 Express Edition – Newb

+0

이것 역시 컴파일러에 달려 있다고 생각합니다. btw : 좋은 질문 +1 –

답변

8

iostream은 간접적으로 abs()에 대한 정의를 포함하고 있기 때문입니다. 그것은 표준에 의해 허용되지만 의존하지 않아야합니다. 이는 구현에 따라 다르기 때문에 (즉, 코드가 다른 컴파일러에서 컴파일되지 않을 수도 있습니다).

+2

즉, #include 을 포함 시키면 나중에 문제를 피할 수 있습니다. 감사합니다. – Newb