นามสกุลไฟล์รหัส C ++? .cc vs .cpp [ปิด]


599

ฉันเห็นรหัส C ++ บันทึกเป็นทั้งไฟล์.ccและ .cppมีความแตกต่างระหว่างทั้งสองหรือไม่?

คู่มือสไตล์ Googleดูเหมือนว่าจะแนะนำ.ccแต่ให้ไม่มีคำอธิบาย

ฉันเกี่ยวข้องกับโปรแกรมบนระบบ Linux เป็นส่วนใหญ่


85
สรุปมันไม่สำคัญ แหล่งกำเนิดที่เป็นไปได้ cc = C พร้อมคลาส, cpp = C plus plus
Lazer

6
มันสำคัญกับเสียงดังกราว ++ เมื่อคุณให้ไฟล์ส่วนหัว C ++ พร้อมชื่อที่ลงท้ายด้วย. h เสียงดังกราว ++ จะเตือนคุณ
allyourcode

4
เครื่องมืออีกอย่างที่น่าสนใจคือ emacs ด้วยการกำหนดค่า. emacs ใหม่ทั้งหมดการเปิด ("การค้นหา" ในภาษา emacs) ไฟล์. h จะเปิดใช้งานโหมด c ไม่ใช่โหมด c ++ แน่นอนคุณสามารถกำหนดค่า emacs ให้ทำอย่างอื่น (เช่นเดียวกับทุกอย่างใน emacs) แต่ประเด็นของฉันคือ c-mode นั้นเป็นค่าเริ่มต้นทันที
allyourcode

3
lintใส่ใจ, .Cคือ C ++ และ.cคือ C กับสิ่งที่ไม่มีความเข้าใจในหรือ.cc .cppอย่างน้อยบน AIX 6.1
Jesse Chisholm

5
การตอบว่า "ไม่สำคัญ" ก็ไม่ได้ช่วยอะไรจริงๆ คำถามมีความเกี่ยวข้องโดยสิ้นเชิง OP กำลังมองหาการประชุมที่มั่นคงที่จะยึดมั่น คำตอบที่ดีกว่าคือ: "น่าเสียดายที่ชุมชน C ++ ไม่มีข้อตกลงที่มั่นคงในเรื่องนี้" มันเศร้าถ้าคุณคิดเกี่ยวกับมัน ภาษายอดนิยมอื่น ๆ ทั้งหมดดูเหมือนจะมีนามสกุลไฟล์ที่ไม่ซ้ำใคร ฉันจะยึดติดกับสิ่งที่โครงการสำคัญใช้เช่น gcc พวกเขาใช้ .cc
Lucio Paiva

คำตอบ:


703

ในตอนท้ายของวันมันไม่สำคัญเพราะคอมไพเลอร์ C ++ สามารถจัดการกับไฟล์ในรูปแบบใดรูปแบบหนึ่ง หากเป็นปัญหาที่แท้จริงในทีมของคุณให้พลิกเหรียญและไปยังงานจริง


89
นั่นเป็นจุดที่ถูกต้อง แต่ไม่ตอบคำถามของผู้ใช้
vikrantt

319
ซีซีได้เร็วขึ้นในการพิมพ์
Thang

50
ทำไมนี่เป็นคำตอบที่ยอมรับได้? โปรแกรมเมอร์รุ่นใหม่จะไม่ทราบว่ามันไม่สำคัญและพวกเขาสมควรได้รับคำตอบที่ตรงไปตรงมา
Robben_Ford_Fan_boy

14
คำตอบนั้นไม่เพียงพอสำหรับโปรแกรมเมอร์ที่มีความอยากรู้อยากเห็นและมีสติ ฉันต้องการคำตอบในหน้านี้มากขึ้นเนื่องจากมีคำอธิบายที่ละเอียดยิ่งขึ้น
Novin Shahroudi

2
เมื่อพิจารณาแล้วว่าคอมไพเลอร์ไม่ใช่เครื่องมือเดียวที่เกี่ยวข้อง - เกือบทุกครั้งจะมี "make" หรือยูทิลิตี้ที่คล้ายกันซึ่งจะดูแลส่วนขยายที่คุณใช้สำหรับการสร้างกฎที่ตรงกัน - จากนั้นคำตอบนี้ไม่ได้อยู่ในแกน ความกังวลของคำถาม โปรดทราบว่ามีการเปลี่ยนแปลงตามระบบและ toolchain (รวมถึงกฎการทำที่คุณชื่นชอบ ฯลฯ ) ซึ่งจะมีผลต่อการตัดสินใจ ตัวอย่างเช่นระบบสร้างหลายเป้าหมายเริ่มต้นที่เรียกซ้ำหลาย ๆ ชุดในแพลตฟอร์มการพัฒนา QNX 6 ไม่ได้รับไฟล์ * .cpp เป็นแหล่งภาษา C ++ มันต้องการ. cc
JoGusto

296

GNU GCC ตระหนักถึงความต่อไปนี้ทั้งหมดเป็น C ++ ไฟล์และจะใช้ภาษา C ++ รวบรวมโดยไม่คำนึงว่าคุณเรียกมันผ่าน GCC หรือกรัม ++: .C, .cc, .cpp, .CPP, .c++, หรือ.cp.cxx

โปรดสังเกตว่า.C- ตัวพิมพ์เล็กใน GCC .cเป็นไฟล์ C ในขณะที่.Cเป็นไฟล์ C ++ (หากคุณให้คอมไพเลอร์ตัดสินว่าคอมไพล์คืออะไร)

GCC ยังสนับสนุนส่วนต่อท้ายอื่น ๆ เพื่อระบุการจัดการพิเศษเช่น.iiไฟล์จะถูกรวบรวมเป็น C ++ แต่ไม่ได้ประมวลผลล่วงหน้า (มีไว้สำหรับรหัสที่ประมวลผลล่วงหน้าแยกต่างหาก) คำต่อท้ายที่รู้จักทั้งหมดมีรายละเอียดที่gcc.gnu.org


5
"case เรื่องใน GCC" - แล้ว Windows ล่ะ (เพราะมันไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก)
Devesh Khandelwal

17
@Devesh: Windows ด้วย แต่ระบบปฏิบัติการจะป้องกันไม่ให้คุณมีสองไฟล์ในโฟลเดอร์ที่แตกต่างกันโดยเฉพาะกรณี
Clifford

23
@DeveshKhandelwal แต่มันเป็นกรณีที่รักษา
Yatharth Agarwal

229

คำแนะนำที่ยอดเยี่ยมเกี่ยวกับการใช้สำหรับ makefile และเครื่องมืออื่น ๆ การพิจารณาเครื่องมือที่ไม่คอมไพเลอร์ในขณะที่การตัดสินใจว่าส่วนขยายใดที่จะใช้เป็นวิธีการที่ยอดเยี่ยมในการช่วยค้นหาคำตอบที่เหมาะกับคุณ

ฉันแค่อยากจะเพิ่มต่อไปนี้เพื่อช่วยเหลือเกี่ยวกับบาง.ccเทียบกับ.cppข้อมูลที่ผมพบว่า ต่อไปนี้เป็นส่วนขยายที่แยกตามสภาพแวดล้อมที่แตกต่างกัน (จากหนังสือ "C ++ Primer Plus"):

Unix ใช้: .C, .cc, .cxx,.c

GNU C ++ ใช้: .C, .cc, .cxx, .cpp,.c++

Digital Mars ใช้: .cpp,.cxx

Borland C ++ ใช้: .cpp

Watcom ใช้: .cpp

Microsoft Visual c ++ ใช้: .cpp, .cxx,.cc

Metrowerks CodeWarrior ใช้: .cpp, .cp, .cc, .cxx,.c++

สภาพแวดล้อมที่แตกต่างกันรองรับส่วนขยายที่แตกต่างกัน ฉันก็กำลังมองหาที่จะตอบคำถามนี้และพบว่าโพสต์นี้ จากโพสต์นี้ฉันคิดว่าฉันจะไปด้วย.hppและ.cppเพื่อความสะดวกในการจดจำข้ามแพลตฟอร์ม / เครื่องมือข้าม


5
คำตอบนี้อยู่ใกล้กว่าคนอื่น ๆ ในความพยายามที่จะจัดการกับคำถามที่นำเสนอซึ่งเป็นเรื่องเกี่ยวกับคนที่กำลังมองหาการประชุมที่มั่นคง ภาษาอื่นมี แต่ที่เกี่ยวข้องกับนามสกุลไฟล์, C ++ ดูเหมือนว่าจะขาดมัน
Lucio Paiva

6
ในสิ่งที่รู้สึกไม่ Unix ไม่ใช้.cpp?
Keith Thompson

vc ++ 6.0 ไม่รองรับไฟล์. cc
xus

@KeithThompson ตอบคำถามผู้ใช้ user181548
Spyros Mourelatos

@SpyrosMourelatos ใช่ แต่ก็ยังเป็นกรณีที่รหัส C ++ ในระบบที่เหมือน Unix ใช้กันทั่วไป.cppสำหรับไฟล์ต้นฉบับ C ++ (คำตอบที่บันทึกไว้อ้างว่า "cpp" เป็นตัวย่อสำหรับตัวประมวลผลล่วงหน้า C)
Keith Thompson

79

.cppเป็นส่วนขยายที่แนะนำสำหรับ C ++ เท่าที่ฉันรู้ บางคนแนะนำให้ใช้.hppกับส่วนหัว C ++ เพื่อแยกความแตกต่างจาก C

ถึงแม้ว่าคอมไพเลอร์จะไม่สนใจสิ่งที่คุณทำ แต่เป็นความชอบส่วนตัว


60
ฉันตัดสินใจเปลี่ยนจากการใช้. h เป็นการใช้. hpp สำหรับส่วนหัว c ++ ส่วนใหญ่เป็นเพราะเครื่องมืออื่น ๆ เช่นบรรณาธิการจำเป็นต้องรู้เช่นกัน - นอกจากนี้เมื่อใช้ส่วนหัว precompiled กับ gcc ค่าเริ่มต้นคือการใช้ C สำหรับไฟล์. h และ C ++ สำหรับไฟล์. hpp ยกเว้นว่าคุณใช้ตัวเลือก '-x c ++ - header' เมื่อทำการคอมไพล์ ไฟล์. h
jdkoftinoff

5
@jd ตกลง มันทำให้เครื่องมืออัตโนมัติง่ายขึ้นเล็กน้อยถ้าไฟล์ h / c เปลี่ยนเป็นไฟล์ hpp / cpp
Paul Nathan

4
g ++ ไม่รู้จัก. hpp เป็นส่วนหัว C ++ (สำหรับการคอมไพล์ส่วนหัวล่วงหน้า) แต่จะเป็น. hh ด้วยเหตุนี้ฉันจึงใช้. cc / .hh มากกว่า. cpp / .hpp เนื่องจากไม่มีความแตกต่างที่แท้จริง
Tronic

12
@Tronic: เนื่องจาก 4.3 gcc รู้จัก. hpp ให้เปรียบเทียบgcc.gnu.org/onlinedocs/gcc-4.2.4/gcc/Overall-Options.htmlกับgcc.gnu.org/onlinedocs/gcc-4.3.6/gcc/Overall -Options.html
CesarB

3
@CharlesAddis - ใช่ฉันต้องแปลงโค้ดจำนวนมากที่มี "abcd.H" (อินเทอร์เฟซ c ++) และ "abcd.h" (อินเทอร์เฟซ C) ในไดเรกทอรีเดียวกันเป็น "abcd.hpp" และ "abcd.h "เพราะเพียงแค่ทำ" svn co "หรือคลายซิปลงในกล่อง Windows หรือกล่อง Mac OS X (ที่มีระบบไฟล์เริ่มต้น) จะล้มเหลวเนื่องจาก" ซ้ำชื่อไฟล์ "
jdkoftinoff

37

ฉันเองใช้.ccส่วนขยายสำหรับไฟล์การใช้งาน.hhสำหรับส่วนหัวและ.inlสำหรับอินไลน์ / แม่แบบ

อย่างที่ได้กล่าวไปก่อนหน้านี้มันเป็นเรื่องของรสนิยมเป็นหลัก

จากสิ่งที่ผมเคยเห็น , .ccดูเหมือนว่าจะมีมากขึ้น " มาเปิดโครงการที่มุ่งเน้น " เช่นนั้นควรอยู่ในซอฟต์แวร์โอเพนซอร์สบางอย่างที่ดีการเข้ารหัสรูปแบบในขณะที่ cppน่าจะเป็น Windowish มากกว่า

--- แก้ไข

ดังที่ได้กล่าวมานี้คือ"จากสิ่งที่ฉันได้เห็น"มันอาจจะผิด มันเป็นเพียงว่าทุกโครงการของ Windows ฉันได้ทำงานเกี่ยวกับการใช้.cppและจำนวนมากของโครงการโอเพนซอร์ส (ซึ่งส่วนใหญ่จะเป็นบนยูนิกซ์ชอบ) .ccการใช้งาน

ตัวอย่างสไตล์การเข้ารหัสโดยใช้.cc:


1
คุณมีการอ้างอิงถึงสิ่งนี้หรือไม่? ฉันไม่เคยเห็น OSS .cc vs Windows .cpp
bobby

6
Visual Studio สร้างไฟล์. cpp สำหรับ C ++ ฉันไม่รู้ประวัติเบื้องหลัง
Natan Yellin

7
LLVM Coding Standard ดูเหมือนจะสนับสนุน. cpp / .h และวาง-*- C++ -*-แท็กในส่วนหัวllvm.org/docs/CodingStandards.html ; สไตล์การเข้ารหัสของ Mozilla แนะนำ. cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; KDE ดูเหมือนจะใช้. cpp / .h เกินไปquickgit.kde.org
sastanin

19

นามสกุลไฟล์อื่น ๆ ที่ใช้รวมถึง.cxxและ.C(ตัวพิมพ์ใหญ่ C) ฉันเชื่อว่า Bjarne Stroustrup ใช้งาน.Cครั้งแรก .cppเป็นชื่อของตัวประมวลผลล่วงหน้า C จึงโชคไม่ดีที่ใช้กับ C ++ เช่นกัน


13

ตัวเลือกอื่นคือ.cxxที่ที่xควรจะเป็นบวกหมุน 45 °

Windows, Mac และ Linux รองรับทั้งหมด.c++ดังนั้นเราควรใช้มัน


12

หลายคนบอก.ccว่าไม่ได้ทำเพื่ออะไร มันอาจจะ. C ++ เริ่มชีวิตเป็น "C กับคลาส"

เป็นจริง.ccและ.cppยังเป็นชื่อคำสั่งบนระบบ Unix ส่วนใหญ่ (คอมไพเลอร์ c และตัวประมวลผลล่วงหน้า c ตามลำดับ)

ฉันใช้.cppเฉพาะ แต่ฉันเริ่มต้นบน Windows .ccมันเป็นแบบแผนของ Unix มากกว่า แต่ฉันเห็นมันน้อยลงเรื่อย ๆ GNU make มีกฎที่ใช้.cppกันทั่วไปซึ่งอาจใช้ได้ทั้ง Windows และทุกอย่าง ในขณะที่ C ++ สมัยใหม่ไม่ใช้ส่วนขยายเลยสำหรับส่วนหัวฉันไม่ชอบมัน โครงการของฉันทั้งหมดใช้.hสำหรับไฟล์ส่วนหัวและพวกเขาสนับสนุนทั้ง C และ C ++ มากที่สุดเท่าที่เป็นไปได้ผ่านทางและการทดสอบextern "C"__cplusplus


2
ไม่ควรที่จะเป็น. cwc? :)
Joshua

ก่อนคอมไพเลอร์จำนวนมากรองรับเนมสเปซพวกเขายังใช้ส่วนขยาย. h สำหรับส่วนหัวมาตรฐาน โดยทั่วไปคอมไพเลอร์จัดเตรียมเวอร์ชัน. h ที่เลิกใช้แล้วซึ่งวางไลบรารีลงในเนมสเปซส่วนกลาง วิธีนี้ช่วยให้สามารถรองรับรหัสเดิมได้ ฉันอ่านบางครั้งว่าเหตุผลที่พวกเขาไม่มีนามสกุล. h คือมาตรฐานอนุญาตให้พวกเขาไม่ใช่ไฟล์ แต่โดยพื้นฐานแล้ว 'มีอยู่แล้วในตัว' อย่างไรก็ตามนั่นอาจเป็นหลักฐาน
Clifford


11

ฉันไม่เคยเห็นเป็นการส่วนตัว.ccในโครงการใด ๆ ที่ฉันได้ทำไป แต่ในทางเทคนิคทั้งหมดคอมไพเลอร์จะไม่สนใจ

ใครจะเป็นผู้ดูแลคือนักพัฒนาที่ทำงานกับแหล่งที่มาของคุณดังนั้นกฎง่ายๆของฉันคือไปกับสิ่งที่ทีมของคุณพอใจ หาก "ทีม" ของคุณเป็นชุมชนโอเพ่นซอร์สให้ไปกับสิ่งที่พบได้บ่อยซึ่ง.cppน่าจะเป็นที่โปรดปราน


โครงการที่รู้จักกันดีหลายโครงการเช่นgithub.com/google/googletestกำลังใช้.ccเป็นส่วนขยายไฟล์สำหรับไฟล์การนำไปใช้งาน
Cür

10

เช่นเดียวกับการประชุมสไตล์ส่วนใหญ่มีสองสิ่งที่สำคัญ:

  1. สอดคล้องในสิ่งที่คุณใช้ทุกที่ที่เป็นไปได้
  2. อย่าออกแบบอะไรที่ขึ้นอยู่กับตัวเลือกเฉพาะที่ใช้

สิ่งเหล่านั้นอาจดูเหมือนจะขัดแย้งกัน แต่พวกเขาแต่ละคนมีคุณค่าด้วยเหตุผลของตนเอง


8

.Cและ.ccดูเหมือนจะเป็นมาตรฐานสำหรับโปรแกรม C ++ เชิง Unix ที่ฉันเคยเห็น ฉันมักจะใช้.cppตัวเองอยู่เสมอเพราะฉันทำงานบน Windows ได้จริงเท่านั้นและนั่นก็เป็นมาตรฐานที่เคยมีมาตลอดไป

ฉันแนะนำ.cppเป็นการส่วนตัวเพราะ ... มันหมายถึง "C Plus Plus" มันเป็นของหลักสูตรสำคัญอย่างจำเป็นที่นามสกุลไฟล์เป็นคำย่อ แต่เหตุผลนี้ควรพิสูจน์ไม่เพียงพอที่น่าสนใจในสิ่งที่สำคัญอื่น ๆ ที่ไม่ใช่การใช้งานของปุ่ม shift (ซึ่งออกกฎ.Cและ.c++) และหลีกเลี่ยงการ metacharacters นิพจน์ปกติที่เป็นไปได้ (ซึ่งออกกฎ.c++- น่าเสียดายที่คุณหลีกเลี่ยงไม่ได้.แน่นอน)

สิ่งนี้ไม่ได้ออกกฎ.ccดังนั้นถึงแม้ว่ามันจะไม่ได้มีประโยชน์อะไรเลย (หรือทำไม่ได้) มันอาจเป็นทางเลือกที่ดีสำหรับโค้ดที่ใช้ Linux


2
แต่ "cpp" ก็สามารถใช้แทน "C preprocessor" ในความเป็นจริงโปรแกรม "CPP" ในระบบของคุณน่าจะ preprocessor C ...
Jesper

8

ฉันใช้. C และ. h สำหรับแหล่งที่มาและส่วนหัวตามลำดับ สิ่งหนึ่งที่ดีกับตัวเลือกนั้นคือบนบรรทัดคำสั่งมันใช้งานง่าย*.[Ch]เพื่อเลือกไฟล์โค้ดทั้งหมด การใช้.Cอาจเป็นปัญหากับระบบไฟล์ที่ไม่คำนึงถึงขนาดตัวพิมพ์ แต่ถ้าคุณมีfoo.cและfoo.Cอยู่ในไดเรกทอรีเดียวกันคุณสมควรได้รับสิ่งที่คุณได้รับ :)


8

นามสกุล. cc จำเป็นสำหรับการใช้กฎโดยนัยภายใน makefiles มองผ่านลิงค์เหล่านี้เพื่อทำความเข้าใจกับ makefiles ให้ดีขึ้น แต่ดูส่วนที่สองเป็นหลักเพราะมันบอกได้อย่างชัดเจนถึงประโยชน์ของส่วนขยาย. 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ไฟล์ ไม่ต้องห่วง ! :-)
Tom Taylor

1
มีข้อความแจ้งว่า "เราขอแนะนำให้คุณใช้คำต่อท้าย '.cc' สำหรับไฟล์ต้นฉบับ C ++ แทน '.C'" ฉันสงสัยว่าเป็นเพียงถ้อยคำที่ไม่ดี การใช้.Cอาจเป็นปัญหาในระบบที่มีระบบไฟล์ที่ไม่คำนึงถึงขนาดตัวพิมพ์ ฉันไม่คิดว่าจะมีข้อได้เปรียบใด ๆ โดยเฉพาะอย่างยิ่งที่makeเกี่ยวข้องในการใช้.ccเกิน.cppเช่น Makefiles ใช้งานได้ดีกับ.cppไฟล์ต้นฉบับ C ++
Keith Thompson

7

ไม่สำคัญว่าคุณจะใช้ส่วนขยายใด เลือกสิ่งที่คุณต้องการมากกว่าเพียงแค่ให้สอดคล้องกับการตั้งชื่อ ข้อยกเว้นเดียวที่ฉันทราบเกี่ยวกับการตั้งชื่อนี้คือฉันทำไม่ได้WinDDK (หรือจะเป็นWDKตอนนี้หรือไม่) ในการรวบรวม.ccไฟล์ บน Linux แม้ว่ามันแทบจะไม่เป็นปัญหา


6

ฉันกำลังเริ่มโครงการ C ++ ใหม่และเริ่มมองหารูปแบบล่าสุดใน C ++ ฉันสิ้นสุดที่นี่เกี่ยวกับการตั้งชื่อไฟล์และฉันคิดว่าฉันจะแบ่งปันวิธีที่ฉันเลือกได้ ไปที่นี่:

Stroustrup มองว่านี่เป็นการพิจารณาทางธุรกิจมากกว่าเรื่องทางเทคนิคการพิจารณาธุรกิจกว่าเทคนิคหนึ่ง

ทำตามคำแนะนำของเขาลองตรวจสอบสิ่งที่คาดหวัง

สำหรับ UNIX / Linux คุณสามารถตีความ GNU ที่เป็นค่าเริ่มต้นต่อไปนี้สร้างกฎตามที่นิยมใช้คำต่อท้ายชื่อไฟล์. cc เนื่องจากกฎ. cpp และ. C เป็นเพียงนามแฝง:

$ 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 ++ ตัวอย่างเช่น emacs config ของฉันบน Linux โหลดไฟล์. h ทั้งหมดในโหมด C ++ และแก้ไขส่วนหัว C ได้ดี นอกเหนือจากนั้นเมื่อผสม C และ C ++ คุณสามารถทำตามคำแนะนำนี้

ข้อสรุปส่วนตัวของฉัน : .cpp / .hเป็นเส้นทางของการต่อต้านน้อยที่สุด


3

ตามที่คนอื่นเขียนไว้ก่อนหน้าฉันในตอนท้ายมันคือสิ่งที่โครงการ / ทีม / บริษัท ของคุณใช้

โดยส่วนตัวฉันไม่ได้ใช้ ccส่วนขยายฉันพยายามลดจำนวนส่วนขยายและไม่เพิ่มส่วนขยายเว้นแต่จะมีค่าที่ชัดเจน (ตามความเห็นของฉัน)

สำหรับสิ่งที่คุ้มค่านี่คือสิ่งที่ฉันใช้ :

c - รหัส Pure C เท่านั้นไม่มีคลาสหรือโครงสร้างด้วยวิธีการ

cpp - รหัส C ++

hpp- รหัสส่วนหัวเท่านั้น การใช้งานอยู่ในส่วนหัว (เช่นคลาสเทมเพลต)

h- ไฟล์ส่วนหัวสำหรับทั้ง C / C ++ ฉันยอมรับความแตกต่างอื่นที่สามารถทำได้ แต่ตามที่ฉันเขียนฉันพยายามลดจำนวนส่วนขยายเพื่อความเรียบง่าย อย่างน้อยจากโปรเจ็กต์ C ++ ที่ฉันทำงานอยู่hไฟล์สำหรับ pure-C นั้นหายากกว่าดังนั้นฉันไม่ต้องการเพิ่มส่วนขยายอื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.