이 .c

2011-03-02 2 views
163

가능한 중복 : Correct C++ code file extension? .cc vs .cpp이 .c


*.h or *.hpp for your class definitions
나는 그것을 사용한다고 생각하는 데 사용 그 :

  • .h 파일은 C 및 C++의 헤더 파일이며 일반적으로 declara .
  • .c 파일은 C 소스 코드입니다.
  • 파일은 C++ 소스 코드 (C 소스 코드 일 수도 있음)입니다.

.hpp, .cc.cxx 같은 파일이 따라오고, 나는 완전히 혼란에있어 ... 그 사이의 차이 (들) 무엇인가? 언제 "새로운"것들을 사용합니까?

+0

메이크 파일 규칙과의 일관성을 위해'.cpp'보다'.cxx'를 선호합니다. (http://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html 참조) – Christoph

답변

227

역사적으로, C++에 사용되는 첫 번째 확장 정확히 C.이 빌드 시스템은 쉽게 C++와 C 파일을 구별하는 것을 허용하지 않았다 실질적인 문제, 특히 .c의 원인에 대해 같은 .c.h했다.

C++가 개발 된 Unix는 대소 문자를 구분하는 파일 시스템을 사용합니다. 따라서 일부는 C++ 파일에 .C을 사용했습니다. 기타 .c++, .cc.cxx을 사용했습니다. .C.c++은 다른 파일 시스템에서는 사용할 수 없으며 사용이 급격히 줄어든다는 문제점이 있습니다. DOS 및 Windows C++ 컴파일러는 .cpp을 사용하는 경향이 있었으며 일부는 불가능하지는 않더라도 선택을 어렵게 만들었습니다. 이식성에 대한 고려는 MS-Windows 외부에서도 가장 공통적 인 선택이었습니다.

헤더는 대응 .H, .h++, .hh, .hxx.hpp 사용했다. 그러나 주 파일과 달리 .h은 헤더가 C 컨텍스트에 포함될 수 있는지 여부를 알 수없는 단점이 있더라도 C++에 대한 대중적인 선택으로 남아 있습니다. 표준 헤더에는 확장이 전혀 없습니다.

또한 일부는 인라인 정의와 .txx, 템플릿 정의에 대한 .tpp.tpl를 제공하는 헤더 .ii, .ixx, .ipp, .inl을 사용하고 있습니다. 그것들은 정의를 제공하는 헤더에 포함되거나 필요할 때 문맥에서 수동으로 포함됩니다.

일반적으로 컴파일러와 도구는 사용되는 확장명을 신경 쓰지 않지만 C++과 관련된 확장명을 사용하면 사용되는 언어를 올바르게 인식 할 수 있도록 해당 구성법을 추적 할 필요가 없습니다.

2017 편집 : 비주얼 스튜디오의 실험 모듈 지원 ++, 모듈 인터페이스에 대한 기본 확장으로 연타를 .ixx를 인식 같은 목적을 위해 .c++m, .cppm.cxxm을 인식한다.

20

정말 중요하지 않습니다.
.c를 C++ 컴파일러에 공급하면 cpp로 컴파일되고 .cc/.cxx는 일부 컴파일러에서 사용되는 .cpp의 대안입니다.

.hpp는 중요한 c 및 C++ 차이점이있는 헤더 파일을 구별하려는 시도입니다. 일반적인 사용법은 .hpp가 필요한 cpp 래퍼 또는 네임 스페이스를 갖고 c 라이브러리를 c 및 C++에 모두 표시하기 위해 .h를 포함시키는 것입니다.

+0

나는 또한 주목할 것입니다. .cc는 Windows 시스템에서 더 많이 사용되는 유닉스 계열 시스템에서 더 일반적입니다 (그러나 어떤 방식 으로든 "표준"이 아닙니다). 적어도 내 관찰에서. –

+0

Sun의 C++ 컴파일러에서 .cc를 사용했지만 참조를 찾을 수 없다고 생각했습니다. –

14

C++ 헤더에 ".hpp"를 사용하고 C 언어 헤더에 ".h"를 사용합니다. ".hpp"는 파일에 에 대한 C 언어 용 문구가 들어 있음을 상기시켜줍니다 (예 : 은 "class"선언으로 사용됨).

39

이러한 확장 프로그램은 실제로 새로운 것이 아니며 오래되었습니다. :-)

C++이 새로운 경우 일부 사용자는 원본 파일에 대해 .C++ 확장명을 사용하려고했지만 대부분의 파일 시스템에서는 작동하지 않았습니다. 그래서 그들은 .cxx 나 .cpp와 비슷한 것을 시도했습니다.

다른 사람들은 언어 이름에 대해 생각하고 경우에 따라 .cc 또는 .C를 얻기 위해 .c를 "증가"합니다. 그렇게 많은 것을 잡지 않았습니다.

소스가 .cpp 인 경우 머리글은 일치해야하는 .hpp 여야한다고 일부 사람들은 믿고 있습니다. 보통 성공.

4

일반적으로 .c 및 .h 파일은 C 또는 C 호환 코드 용이고 다른 모든 파일은 C++ 용입니다.

많은 사람들은 C++ 파일에 대해 .cpp와 .hpp, .cxx와 .hxx, .cc와 .hh 등의 일관된 페어링을 선호합니다. 개인적으로는 .cpp와 .hpp가 선호됩니다.

5

.HPP 확장에 대한 이야기, 내가 찾으 사람들이이 헤더 파일이 포함되어 있는지 알고 가정 할 때 유용 C++하지 C, 그들이 파일을 볼 순간에 의해, 등 네임 스페이스 또는 템플릿을 사용하여 같은 정도 그들은 C 컴파일러로 피드를 시도하지 않습니다! 또한 선언뿐만 아니라 구현뿐만 아니라 .hpp 파일도 포함하는 헤더 파일의 이름을 지정하는 것이 좋습니다.템플릿 클래스를 포함한 헤더 파일과 유사합니다. 그것은 저의 의견 일 뿐이지 물론 당연한 것입니다! :)