다음을 통해 공유


C++ 라이브러리 헤더 사용

include 지시문에서 이름을 지정하여 표준 헤더의 내용을 포함할 수 있습니다.

#include <iostream>// include I/O facilities

표준 헤더는 원하는 어떤 순서로나 포함할 수 있고 두 번 이상 포함할 수도 있으며 같은 매크로나 형식을 정의하는 둘 이상의 표준 헤더를 포함할 수도 있습니다. 선언 내에 표준 헤더를 포함하지 마세요. 표준 헤더를 포함하기 전에 키워드와 이름이 같은 매크로를 정의하지 마세요.

C++ 라이브러리 헤더에는 필요한 형식을 정의하는 데 사용해야 하는 기타 C++ 라이브러리 헤더가 포함됩니다. (변환 단위에 필요한 모든 C++ 라이브러리 헤더를 항상 명시적으로 포함합니다. 그러나 실제 종속성에 대해 잘못 추측하지 않도록 합니다.) 표준 C 헤더는 다른 표준 헤더를 포함하지 않습니다. 표준 헤더는 이 문서에서 해당 헤더에 대해 설명되어 있는 엔터티만 선언하거나 정의합니다.

라이브러리의 모든 함수는 표준 헤더에서 선언됩니다. 표준 C에서와는 달리 표준 헤더는 함수 선언을 마스킹하는 함수와 이름이 같은 마스킹 매크로를 제공하지 않고도 동일한 결과를 제공할 수 있습니다. 매크로 마스킹에 대한 자세한 내용은 C++ 라이브러리 규칙을 참조하세요.

C++ 라이브러리 헤더에서 operator deleteoperator new 이외의 모든 이름은 std 네임스페이스 또는 std 네임스페이스 내에 중첩된 네임스페이스에서 정의됩니다. std::cin과 같이 cin이라는 이름을 참조합니다. 그러나 매크로 이름은 네임스페이스 한정자가 적용되지 않으므로 항상 네임스페이스 한정자 없이 작성 __STD_COMPLEX 합니다.

일부 변환 환경에서는 C++ 라이브러리 헤더를 포함 면 std 네임스페이스에 선언되어 있는 외부 이름이 전역 네임스페이스에도 호이스트될 수 있으며 각 이름에 대해 개별 using 선언이 포함됩니다. 그렇지 않으면 헤더는 현재 네임스페이스에 라이브러리 이름을 도입하지 않습니다.

C++ 표준에 따르면 C 표준 헤더는 std 네임스페이스에서 모든 외부 이름을 선언한 다음 각 이름에 대한 개별 using 선언을 포함하여 해당 이름을 전역 네임스페이스로 호이스트해야 합니다. 하지만 일부 변환 환경에서는 C 표준 헤더가 네임스페이스 선언을 포함하지 않으며 모든 이름을 전역 네임스페이스에서 직접 선언합니다. 따라서 네임스페이스를 처리하는 가장 간편한 방식은 다음의 두 규칙을 따르는 것입니다.

  • 네임스페이스에서 std 일반적으로 선언된 <stdlib.h>외부 이름을 선언하려면(예: 헤더 <cstdlib>포함) 이름은 전역 네임스페이스에서도 선언될 수 있습니다.

  • 전역 네임스페이스에서 선언된 <stdlib.h>외부 이름을 확실하게 선언하려면 헤더 <stdlib.h> 를 직접 포함합니다. 이름은 std 네임스페이스에서도 선언될 수 있습니다.

따라서 비정상적인 종료를 발생 하려면 호출 std::abort 하려는 경우 포함 <cstdlib>해야 합니다. 호출 abort하려면 다음을 포함 <stdlib.h>해야 합니다.

다음과 같은 선언을 작성할 수도 있습니다.

using namespace std;

모든 라이브러리 이름을 현재 네임스페이스로 가져오는 선언. 모든 include 지시문 바로 뒤에 이 선언을 작성하면 이름이 전역 네임스페이스로 호이스트됩니다. 그리고 나면 변환 단위의 나머지 부분에서는 네임스페이스 고려 사항을 무시해도 됩니다. 서로 다른 여러 변환 환경에서 나타나는 대부분의 차이도 방지할 수 있습니다.

별도로 명시되어 있지 않은 경우에는 프로그램 내의 std 네임스페이스 또는 std 네임스페이스 내에 중첩된 네임스페이스에서 이름을 정의할 수 없습니다.

참고 항목

C++ 표준 라이브러리 개요
C++ 표준 라이브러리의 스레드 보안