2010-07-19 4 views

답변

12

헤더 파일은 파일 시스템에 저장되고 파일 이름으로 참조되며 다른 파일 (적어도 C/C++ 또는 M4 매크로 전 처리기를 사용하는 다른 언어)에서는 #include입니다. 헤더 파일은 일반적으로 동일한 특정 항목의 상호 의존적 인 부분 인 코드 조각을 그룹화합니다. 예를 들어 게임에는 모든 그래픽 렌더링을위한 헤더 파일이있을 수 있습니다.

네임 스페이스는 프로그래밍 언어의 요소입니다. 즉, 파일 시스템 개체로 존재하지는 않지만 컴파일러가 특정 네임 스페이스 내에 있음을 컴파일러에 알리는 지정입니다. 네임 스페이스는 일반적으로 유사한 (그러나 반드시 상호 의존적 인 것은 아님) 항목의 인터페이스 (함수, 클래스/구조체, 유형)를 그룹화합니다. 예를 들어 C++의 std 네임 스페이스에는 모든 표준 라이브러리 함수 및 클래스가 포함되어 있습니다.

3

헤더 파일은 소스 파일에 포함되는 파일입니다. 일반적으로 특정 클래스 및 함수에 대한 선언이 포함됩니다.

네임 스페이스를 사용하면 코드에서 식별자를 분류 할 수 있습니다. 즉, 클래스, 함수 등은 네임 스페이스 내에 배치 될 수 있으며, 서로 관련이없는 다른 클래스와는 별도로 유지 될 수 있습니다. 예를 들어 C++에서는 표준 라이브러리의 모든 것이 std 네임 스페이스에 있습니다.

+0

Headerfile에는 프로토 타입, 선언이 포함되어 있습니다. –

+0

@ 비쉬 : 나에게 말하고 있거나 나에게 묻고 있니? 엄밀히 말하면 프로토 타입과 같은 것은 없습니다. 그건 단지 선언 일뿐입니다. – GManNickG

0

공통 파일에서 헤더 파일은 파일 시스템의 고유 파일이고 네임 스페이스는 하나 이상의 파일을 포함합니다.

즉, HeaderFile은 물리적 인 것이며 네임 스페이스는 논리적 인 것입니다.

는 "선언"의 의미를 알 필요가 http://en.wikipedia.org/wiki/Namespace

14

http://en.wikipedia.org/wiki/Header_file이 헤더 파일을 알고 여기에 대해 자세히 알아보십시오.

간단히 말해서 C/C++에서는 컴파일이 소스마다 발생합니다. 내가 A.cpp를 가지고 있고 내부에 다른 곳에서 정의 될 함수 foo()를 사용한다면 컴파일러에게 "이봐, 정의 된 것을 볼 수는 없지만 foo()를 사용하고있다. 내 소스에서 아무 데나, 걱정하지 마세요, 다른 소스에서 정의됩니다. " 컴파일러에게이 것을 알려주는 방법은 A.cpp에서 foo()를 선언하는 것입니다.

내가 foo()의 저자 인 경우, foo()를 사용하는 사람들은 모두 선언문을 써야합니다. void foo(); 소스 파일에 그것은 중복되고 의미없는 일이 될 것입니다. 그리고 그 사람에게 foo()를 사용하여 올바른 선언을하도록 말하는 것은 너무 어렵습니다. 따라서 foo()의 작성자는 foo()를 사용하기위한 선언을 포함하는 파일을 작성하고 사람들이 파일 내용을 소스로 "가져올"수 있도록 파일을 배포합니다. 배포하는 파일은 헤더 파일입니다. 임포트의 동작은 C/C++에서 #include입니다. 예, #include는 포함 된 파일의 내용을 #include의 위치에 삽입하는 것입니다.


네임 스페이스는 다른 이야기입니다. 이 짧은, 당신이 생각할 수 있도록하려면 내가

이 클래스는 정말 바 명명되지

namespace FOO { 
    class Bar { } 
} 
, 그것의 할 경우 기능의 "진짜"이름/예를 들어, 클래스 등이다 "진짜"이름은 사실이다 FOO :: 바.

C++은 "사용"하여 긴 실제 이름을 입력하는 방법을 제공합니다.

-3

네임 스페이스는 headerfile에 주어진 새로운 단어입니다. 새 버전을 사용할 수있게 만들려면.

0

네임 스페이스는 프로그램에서 자주 사용되는 전역 식별자를 식별하는 'ansi C++'의 새로운 개념입니다.

헤더 파일은 신뢰할 수 있고 테스트 된 코드를 재사용함으로써 프로그램을 지원하는 소스 파일이므로 시간과 노력을 절약 할 수 있습니다. !!!

+0

당신의 대답은 유용한 정보를 담고 있으며, 읽기 쉬운 영어를 쓸 수 있도록 더 많은 노력을 기울 였으면 더 잘 받아 들여 졌을 것입니다. 다행스럽게도 당신은 StackOverflow에 대한 좋은 경험을 가지고 있습니다! – spruceb

+0

고마워요! 나는 약간의 편집을했다. 다음에 나는 그것들을 개선 할 것이다. –

관련 문제