2013-03-27 3 views
7

C++ 프로그램에서 후자가 아닌 후자를 포함 할 때 고려해야 할 사항은 무엇입니까? 나는 항상 math.h, stdlib.h을 결코 포함하지 않으며 결코 cmath, cstdlib 등을 포함한다. 나는 후자가 존재하는 이유를 이해하지 못한다.#include <cmath> #include <math.h> C++ 프로그램에서

+0

표시된 중복은 사용자의 질문에 정확하게 응답합니다. –

+0

이미 나열된 것보다 더 관련이있을 수 있습니다. http://stackoverflow.com/questions/8734230/math-interface-vs-cmath-in-c –

+0

@ChrisWhite : 실제로. 감사. –

답변

19

<c ...> 헤더를 포함하는 것이 좋습니다. 그것들은 C++ 표준 라이브러리 헤더입니다.

C++ 표준 라이브러리는 또한 C 표준 라이브러리의 시설을 사용할 수 있도록, 적절한 정적 형식의 안전을 보장하기 위해 조정 다음 <... .h> 헤더는 C 표준 라이브러리에 의해 정의 된 헤더이다.

대부분 C++ 헤더의 내용은 해당 C 라이브러리 헤더와 동일하지만 그 외의 이름은 모두 std 네임 스페이스에 정의되어 있습니다. 표준 C 라이브러리 (1.2) 또는 C 유니 코드로 지정된 30 부속서 D를 통해 절 18에 언급 된 경우를 제외

각 헤더 cname의 내용은, 대응하는 헤더 name.h와 동일해야한다 적절한 경우 TR을 포함하는 것으로 간주합니다. 그러나 C++ 표준 라이브러리에서는 선언문 (C에서 매크로로 정의 된 이름 제외)은 네임 스페이스 std의 네임 스페이스 범위 (3.3.6) 내에 있습니다. 이러한 이름이 전역 네임 스페이스 범위 내에서 처음 선언되었는지 명시 적 사용 선언에 의해 네임 스페이스 std에 삽입되는지 여부는 지정되지 않습니다.

+0

실제로 ''헤더를 사용할 실제 이유는 무엇입니까? 'std' 네임 스페이스는 불편합니다. –

+5

@VioletGiraffe 아마도 당신은 잘못 읽었을 것입니다. 나는 ""헤더를 포함하기를 선호한다고 말했다. 'std' 네임 스페이스는 이름 오염을 피하는 데 도움이됩니다. C++ 헤더에는 C++에 더 유용한 몇 가지 변경 사항이 있습니다. –

+0

나는 오해하지 않았다. 나는 지금 ''헤더를 선호하는 단일 이유를 보지 못했다. –