C ++ 코드가 파일 .cc과 .cpp파일 로 모두 저장된 것을 보았습니다 . 둘 사이에 차이가 있습니까?
구글 스타일 가이드를 제안하는 것 같다 .cc,하지만 설명을 제공하지 않습니다.
나는 주로 Linux 시스템의 프로그램에 관심이 있습니다.
lint걱정하고, .CC ++이고 또는 .c의 .cc어느 것도 이해하지 못하는 C입니다 .cpp. 최소한 AIX 6.1에서.
.cc 합니다.
C ++ 코드가 파일 .cc과 .cpp파일 로 모두 저장된 것을 보았습니다 . 둘 사이에 차이가 있습니까?
구글 스타일 가이드를 제안하는 것 같다 .cc,하지만 설명을 제공하지 않습니다.
나는 주로 Linux 시스템의 프로그램에 관심이 있습니다.
lint걱정하고, .CC ++이고 또는 .c의 .cc어느 것도 이해하지 못하는 C입니다 .cpp. 최소한 AIX 6.1에서.
.cc 합니다.
답변:
C ++ 컴파일러는 어느 형식 으로든 파일을 처리 할 수 있기 때문에 하루가 끝나도 상관 없습니다. 팀 내에서 실제 문제라면 동전을 뒤집어 실제 작업으로 이동하십시오.
GNU GCC는 C ++ 파일로 다음을 모두 인식하고 GCC를 통해있는 invoke C ++ 컴파일 여부에 관계없이 당신의 사용 또는 g ++ : .C, .cc, .cpp, .CPP, .c++, .cp, 또는 .cxx.
노트 .C- 경우를 GCC에 문제를, .c반면 C 파일입니다 .C(컴파일러 그것은 즉 컴파일 결정할 수 있도록 경우) C ++ 파일입니다.
GCC는 또한 특수 처리를 나타내는 다른 접미사를 지원합니다. 예를 들어 .ii파일은 C ++로 컴파일되지만 사전 처리되지는 않습니다 (별도의 사전 처리 된 코드 용). 인식 된 모든 접미사는 gcc.gnu.org에 자세히 나와 있습니다.
사용할 확장명을 결정하면서 비 컴파일러 도구를 고려하여 makefile 및 기타 도구에 사용할 유용한 조언은 자신에게 맞는 답변을 찾는 데 도움이되는 훌륭한 방법입니다.
난 그냥 몇 가지 도움말에 다음을 추가하고 싶었 .cc대 .cpp내가 발견 한 정보. 다음은 "C ++ Primer Plus"책에서 다른 환경으로 분류 된 확장입니다.
유닉스 사용 : .C, .cc, .cxx,.c
GNU C ++ 사용 : .C, .cc, .cxx, .cpp,.c++
디지털 화성 용도 : .cpp,.cxx
볼랜드 C ++는 다음을 사용합니다. .cpp
Watcom은 다음을 사용합니다. .cpp
의 Microsoft Visual C ++ 사용 : .cpp, .cxx,.cc
메트로 웍스의 CodeWarrior의 사용 : .cpp, .cp, .cc, .cxx,.c++
다른 환경은 다른 확장을 지원합니다. 나도이 질문에 대답 하고이 게시물을 찾았습니다. 이 게시물을 바탕으로 내가 갈 거라고 생각 .hpp하고 .cpp크로스 플랫폼 / 크로스 도구 인식의 용이성을 위해.
.cpp않습니까?
.cpp가 C ++ 소스 파일에 매우 일반적으로 사용되는 경우입니다. 인용 된 답변에 따르면 "cpp"는 C 전 처리기의 약어입니다.
.cpp내가 아는 한 C ++의 권장 확장입니다. 일부 사람들 .hpp은 C와 구별하기 위해 C ++ 헤더 사용 을 권장하기도합니다 .
컴파일러는 당신이하는 일에 신경 쓰지 않지만 개인적인 취향입니다.
개인적 .cc으로 구현 파일, .hh헤더 및 .inl인라인 / 템플릿에 확장을 사용 합니다 .
앞서 말했듯이, 그것은 주로 맛의 문제입니다.
내가 본 바로는 , .cc더 "것 같다 오픈 소스 프로젝트가 중심 이있는 반면, 스타일을 코딩 훌륭한 오픈 소스 소프트웨어에 좋습니다으로". cpp더 창 같은 것 같습니다.
--- 편집하다
언급했듯이, 이것은 "내가 본 것" 에서 잘못된 것일 수 있습니다. 내가 작업 한 모든 Windows 프로젝트가 사용 .cpp되었고 많은 오픈 소스 프로젝트 (주로 유닉스 계열)가 사용되었습니다 .cc.
다음을 사용하는 코딩 스타일 예 .cc:
-*- C++ -*-하고 헤더 에 태그를 넣는 것 같습니다 . llvm.org/docs/CodingStandards.html ; 모질라 코딩 스타일은 .cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; KDE는 .H도 / .CPP을 사용하는 것으로 보인다 quickgit.kde.org
여러 사람 .cc이 아무 말도 하지 않는다고 말하는가 ? 그것은 수도. C ++는 인생을 "C with Classes"로 시작했습니다.
진정한 것을 .cc및 .cpp대부분의 유닉스 시스템 (C 컴파일러와 C 프리 프로세서 각각)에 명령 이름도 있습니다.
나는 .cpp독점적으로 사용 하지만 Windows에서 시작했습니다. .cc더 많은 유닉스 관습이지만, 거기에서도 점점 더 적습니다. GNU make에는 기본 규칙이 .cpp있으므로 아마도 Windows와 다른 모든 것에서 기본적으로 작동합니다. 반면에 현대 C ++은 헤더에 전혀 확장을 사용하지 않으므로 실제로는 마음에 들지 않습니다. 내 모든 프로젝트 .h는 헤더 파일에 사용 하며 가능한 한 많은 extern "C"테스트 및 테스트 를 통해 C 및 C ++를 모두 지원합니다 __cplusplus.
나는 개인적으로 내가 한 .cc프로젝트에서 본 적이 없지만 모든 기술에서 컴파일러는 신경 쓰지 않을 것입니다.
누가 관심을 가질 것인가는 개발자가 소스를 다루는 것이므로 팀원이 편한 것을 따라야합니다. "팀"이 오픈 소스 커뮤니티 인 경우 가장 일반적인 .cpp것으로 이동하십시오.이 중 가장 좋아 하는 것 같습니다.
.ccC ++ 구현 파일에 대한 파일 확장자로 사용 됩니다
.C그리고 .cc내가 본 (몇) 유닉스 지향 C ++ 프로그램에 대한 표준이 될 것으로 보인다. 나는 항상 .cppWindows에서 일하기 때문에 항상 나 자신을 사용해 왔으며 그 이후로 영원히 표준이되었습니다.
개인적으로 추천합니다 .cpp. 왜냐하면 "C Plus Plus"의 약자입니다. 이 파일 확장명이 약어는 것이 매우 중요 물론이지만,이 근거는 설득력있는 다른 중요한 일들이 시프트 키의 비 사용하다 (배제 충분히 증명해야 .C하고 .c++어떤이 배제 곳 (수)과 정규 표현식 메타 문자의 회피 .c++- 불행히도 .물론 물론 피할 수는 없습니다 .).
이것은 배제 .cc하지 않으므로 실제로 아무것도 의미하지는 않지만 Linux 지향 코드에는 좋은 선택 일 것입니다.
.cc 확장자는 makefile 내에서 암시 적 규칙을 사용하는 데 필요합니다. 이 링크를 통해 makefile을 더 잘 이해하지만 .cc 확장자의 유용성을 명확하게 나타내는 두 번째 링크를 주로 살펴보십시오.
ftp://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_2.html
https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_10.html
나는 지금 이것에 대해 배웠다.
.cpp파일입니다. 걱정 마 ! :-)
.C대소 문자를 구분하지 않는 파일 시스템이있는 시스템에서는 사용에 문제가있을 수 있습니다. 예를 들어 over make를 사용할 때 특별한 이점이 있다고 생각하지 않습니다 . Makefile 은 C ++ 소스 파일에 적합합니다. .cc.cpp.cpp
새 C ++ 프로젝트를 시작하고 최신 C ++ 스타일을 찾기 시작했습니다. 나는 파일 이름 지정과 관련하여 여기에서 끝났고 나는 내가 선택한 것을 생각해 낼 것이라고 생각했다. 간다 :
Stroustrup은 이것을 기술적 인 문제보다 비즈니스 고려 사항으로 간주 합니다.
그의 조언에 따라 툴체인이 기대하는 것을 확인합시다.
UNIX / Linux의 경우 .cpp 및 .C 규칙은 별명이므로 다음 기본 GNU make 규칙을 .cc 파일 이름 접미사를 선호하는 것으로 해석 할 수 있습니다.
$ make -p | egrep COMPILE[^=]+=
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cpp = $(COMPILE.cc)
COMPILE.C = $(COMPILE.cc)
(참고 : 기본 COMPILE.cxx 별칭은 없습니다)
따라서 UNIX / Linux를 대상으로하는 경우 .cc와 .cpp가 모두 좋은 옵션입니다.
Windows를 대상으로 할 때 파일 시스템은 대소 문자를 구분하지 않으므로 .C에 문제가 있습니다. Visual Studio는 .cpp 접미사를 선호 한다는 점에 유의해야합니다.
macOS를 타겟팅 할 때 Xcode는 .cpp / .hpp를 선호합니다 (Xcode 10.1에서만 확인). .h를 사용하도록 항상 헤더 템플릿을 변경할 수 있습니다.
가치있는 것에 대해, 원하는 코드 기반을 기반으로 결정을 내릴 수도 있습니다. Google은 .cc를 사용 하고 LLVM libc ++는 .cpp를 사용합니다.
헤더 파일은 어떻습니까? 이들은 C 또는 C ++ 파일의 컨텍스트에서 컴파일되므로 .h와 .hpp를 구분할 컴파일러 또는 빌드 시스템이 없습니다. 편집기 / IDE의 구문 강조 표시 및 자동 들여 쓰기는 문제가 될 수 있지만 모든 .h 파일을 C ++ 모드에 연결하면 수정됩니다. 예를 들어 Linux의 emacs 구성은 모든 .h 파일을 C ++ 모드로로드하고 C 헤더를 잘 편집합니다. 그 외에도 C와 C ++를 혼합 할 때이 조언을 따를 수 있습니다 .
내 개인적인 결론 : .cpp / .h 는 가장 저항이 적은 경로입니다.
다른 사람들이 내 앞에서 쓴 것처럼 결국에는 프로젝트 / 팀 / 회사에서 사용하는 내용이 끝납니다.
개인적으로, 나는 cc확장을 사용하지 않고, 명확한 가치가 없다면 (내 의견으로는) 확장 수를 줄이고 확장 하지 않으려 고합니다.
그 가치가 무엇인지, 이것은 내가 사용하는 것입니다 .
c -순수 C 코드 만, 메소드가있는 클래스 또는 구조체 없음
cpp -C ++ 코드
hpp-헤더 만 코드. 구현은 헤더에 있습니다 (예 : 템플릿 클래스).
h-C / C ++ 용 헤더 파일. 나는 또 다른 구별이 가능하다는 데 동의하지만, 내가 쓴 것처럼 단순화를 위해 확장 수를 줄이려고합니다. 적어도 내가 일한 C ++ 프로젝트에서 hpure-C 파일은 더 드물기 때문에 다른 확장자를 추가하고 싶지 않았습니다.