Saya telah melihat kode C ++ disimpan sebagai keduanya .cc
dan .cpp
file. Apakah ada perbedaan di antara keduanya?
The panduan gaya Google tampaknya menunjukkan .cc
, tapi tidak memberikan penjelasan.
Saya terutama mementingkan program pada sistem Linux.
lint
peduli,.C
adalah C ++ dan.c
C tanpa memahami apa pun dari.cc
atau.cpp
. Setidaknya pada AIX 6.1..cc
.Jawaban:
Pada akhirnya, tidak masalah karena kompiler C ++ dapat menangani file dalam format apa pun. Jika ini masalah nyata dalam tim Anda, balikkan koin dan lanjutkan ke pekerjaan yang sebenarnya.
sumber
GNU GCC mengakui semua berikut sebagai C ++ file, dan akan menggunakan C ++ kompilasi terlepas dari apakah Anda menjalankan melalui gcc atau g ++:
.C
,.cc
,.cpp
,.CPP
,.c++
,.cp
, atau.cxx
.Catatan hal
.C
- hal dalam GCC,.c
adalah file C sedangkan file.C
C ++ (jika Anda membiarkan kompiler memutuskan apa yang dikompilasi itu adalah).GCC juga mendukung sufiks lain untuk menunjukkan penanganan khusus, misalnya
.ii
file akan dikompilasi sebagai C ++, tetapi tidak diproses sebelumnya (dimaksudkan untuk kode pra-pemrosesan yang terpisah). Semua sufiks yang dikenali dirinci di gcc.gnu.orgsumber
Saran bagus untuk digunakan untuk makefile dan alat-alat lain, mempertimbangkan alat non-kompiler sambil memutuskan ekstensi mana yang akan digunakan adalah pendekatan yang bagus untuk membantu menemukan jawaban yang cocok untuk Anda.
Saya hanya ingin menambahkan yang berikut untuk membantu dengan beberapa info
.cc
vs.cpp
yang saya temukan. Berikut ini adalah ekstensi yang dipecah oleh lingkungan yang berbeda (dari buku "C ++ Primer Plus"):Unix menggunakan:
.C
,.cc
,.cxx
,.c
GNU C ++ menggunakan:
.C
,.cc
,.cxx
,.cpp
,.c++
Digital Mars penggunaan:
.cpp
,.cxx
Borland C ++ menggunakan:
.cpp
Watcom menggunakan:
.cpp
Microsoft Visual C ++ menggunakan:
.cpp
,.cxx
,.cc
Metrowerks CodeWarrior menggunakan:
.cpp
,.cp
,.cc
,.cxx
,.c++
Lingkungan yang berbeda mendukung ekstensi yang berbeda. Saya juga mencari untuk menjawab pertanyaan ini dan menemukan posting ini. Berdasarkan posting ini saya pikir saya bisa pergi dengan
.hpp
dan.cpp
untuk kemudahan cross-platform / cross-tool recognition.sumber
.cpp
?.cpp
untuk file sumber C ++. (Jawaban yang dikutip mencatat bahwa "cpp" adalah singkatan untuk preprosesor C.).cpp
adalah ekstensi yang disarankan untuk C ++ sejauh yang saya tahu. Beberapa orang bahkan merekomendasikan penggunaan.hpp
untuk header C ++, hanya untuk membedakan dari C.Meskipun kompiler tidak peduli apa yang Anda lakukan, itu adalah preferensi pribadi.
sumber
Saya pribadi menggunakan
.cc
ekstensi untuk file implementasi,.hh
untuk header, dan.inl
untuk inline / template.Seperti yang dikatakan sebelumnya, ini terutama masalah selera.
Dari apa yang saya lihat ,
.cc
tampaknya lebih " proyek open source berorientasi ", seperti yang disarankan dalam beberapa gaya pengkodean perangkat lunak open source yang hebat, sedangkan.cpp
tampaknya lebih Windowish.--- EDIT
Seperti yang disebutkan, ini "dari apa yang saya lihat" , mungkin salah. Hanya saja semua proyek Windows yang pernah saya kerjakan digunakan
.cpp
, dan banyak proyek open source (yang sebagian besar menggunakan unix-like).cc
.Contoh gaya pengkodean menggunakan
.cc
:sumber
-*- C++ -*-
tag di header llvm.org/docs/CodingStandards.html ; Mozilla Coding Style menyarankan .cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; KDE tampaknya menggunakan .cpp / .h juga quickgit.kde.orgEkstensi file lain yang digunakan termasuk
.cxx
dan.C
(huruf besar C). Saya percaya Bjarne Stroustrup digunakan pada.C
awalnya..cpp
adalah nama preprocessor C sehingga sangat disayangkan bahwa itu digunakan untuk C ++ juga.sumber
Pilihan lainnya adalah di
.cxx
manax
seharusnya menjadi plus diputar 45 °.Semua Windows, Mac, dan Linux mendukung semuanya,
.c++
jadi kita harus menggunakannya.sumber
Beberapa orang mengatakan
.cc
tidak tahan untuk apa pun? Itu mungkin. C ++ memulai kehidupan sebagai "C dengan Kelas".Benar itu
.cc
dan.cpp
juga nama perintah pada kebanyakan sistem Unix (c compiler dan c preprocessor masing-masing).Saya menggunakan
.cpp
secara eksklusif, tetapi saya mulai pada Windows..cc
lebih merupakan konvensi Unix, meskipun saya melihatnya semakin kurang di sana. GNU make memiliki aturan untuk.cpp
jadi itu mungkin lebih disukai, itu akan berfungsi secara default pada Windows dan yang lainnya. Di sisi lain C ++ modern tidak menggunakan ekstensi sama sekali untuk header, saya benar-benar tidak suka itu. Semua proyek saya digunakan.h
untuk file header, dan mereka mendukung C dan C ++ sebanyak mungkin melaluiextern "C"
dan pengujian__cplusplus
.sumber
Ikuti saja konvensi yang digunakan oleh proyek / tim.
sumber
Saya pribadi tidak pernah melihat
.cc
dalam proyek apa pun yang saya kerjakan, tetapi dalam semua teknis kompiler tidak akan peduli.Yang akan peduli adalah pengembang yang mengerjakan sumber Anda, jadi aturan praktis saya adalah mengikuti apa yang nyaman dengan tim Anda. Jika "tim" Anda adalah komunitas sumber terbuka, lakukan sesuatu yang sangat umum, yang
.cpp
sepertinya menjadi favorit.sumber
.cc
sebagai ekstensi file untuk file implementasi C ++Seperti kebanyakan konvensi gaya, hanya ada dua hal yang penting:
Mereka mungkin tampak bertentangan, tetapi mereka masing-masing memiliki nilai karena alasan mereka sendiri.
sumber
.C
dan.cc
tampaknya menjadi standar untuk (beberapa) program C ++ berorientasi Unix yang pernah saya lihat. Saya selalu menggunakan.cpp
diri saya sendiri, karena saya hanya benar-benar bekerja pada Windows dan itu sudah menjadi standar di sana seperti selamanya.Saya merekomendasikan
.cpp
secara pribadi, karena ... itu singkatan dari "C Plus Plus". Tentu saja sangat penting bahwa ekstensi file adalah akronim, tetapi jika alasan ini terbukti tidak cukup meyakinkan hal-hal penting lainnya adalah tidak digunakannya tombol shift (yang mengesampingkan.C
dan.c++
) dan menghindari metakarakter ekspresi reguler jika memungkinkan (yang mengesampingkan.c++
- sayangnya Anda tidak dapat benar-benar menghindari hal itu.
.).Ini tidak mengesampingkan
.cc
, jadi meskipun tidak benar-benar mendukung apa pun (atau bukan?) Itu mungkin merupakan pilihan yang baik untuk kode yang berorientasi Linux.sumber
Saya telah menggunakan masing-masing .C dan .h untuk source dan header Satu hal yang menyenangkan dengan pilihan itu adalah, pada baris perintah, mudah digunakan
*.[Ch]
untuk memilih semua file kode. Menggunakan.C
bisa menjadi masalah pada filesystem yang tidak sensitif, tetapi jika Anda memilikifoo.c
danfoo.C
dalam direktori yang sama, Anda tetap berhak mendapatkan apa yang Anda dapatkan :)sumber
Ekstensi .cc diperlukan untuk menggunakan aturan implisit dalam makefiles. Lihatlah tautan-tautan ini untuk mendapatkan pemahaman yang lebih baik tentang makefile, tetapi lihat terutama yang kedua, karena secara jelas mengatakan kegunaan ekstensi .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
Saya baru tahu ini sekarang.
sumber
.cpp
file. Jangan khawatir ! :-).C
dapat menjadi masalah pada sistem dengan sistem file case-insensitive. Saya tidak berpikir ada keuntungan tertentu, sejauhmake
menyangkut, dalam menggunakan.cc
lebih.cpp
, misalnya. Makefiles berfungsi dengan baik.cpp
untuk file sumber C ++.Tidak masalah ekstensi mana yang Anda gunakan. Pilih yang mana yang Anda suka lebih, konsistenlah dengan penamaan. Satu-satunya pengecualian yang saya ketahui dengan konvensi penamaan ini adalah bahwa saya tidak dapat membuat
WinDDK
(atauWDK
sekarang?) Untuk mengkompilasi.cc
file. Di Linux, itu bukan masalah.sumber
Saya memulai proyek C ++ baru dan mulai mencari yang terbaru dalam gaya C ++. Saya berakhir di sini mengenai penamaan file dan saya pikir saya akan membagikan bagaimana saya menemukan pilihan saya. Ini dia:
Stroustrup melihat ini lebih sebagai pertimbangan bisnis daripada pertimbangan teknis .
Mengikuti sarannya, mari kita periksa apa yang diharapkan oleh alat.
Untuk UNIX / Linux, Anda dapat menafsirkan GNU default berikut membuat aturan sebagai mendukung akhiran nama file .cc, karena aturan .cpp dan .C hanyalah alias:
(Catatan: tidak ada alias COMPILE.cxx default)
Jadi jika Anda menargetkan UNIX / Linux, baik .cc dan .cpp adalah opsi yang sangat bagus.
Saat menargetkan Windows, Anda mencari masalah dengan .C, karena sistem file-nya tidak sensitif huruf. Dan mungkin penting bagi Anda untuk mencatat bahwa Visual Studio mendukung sufiks .cpp
Saat menargetkan macOS, perhatikan bahwa Xcode lebih suka .cpp / .hpp (baru diperiksa pada Xcode 10.1). Anda selalu dapat mengubah template header untuk menggunakan .h.
Untuk apa nilainya, Anda juga dapat mendasarkan keputusan Anda pada basis kode yang Anda sukai. Google menggunakan .cc dan LLVM libc ++ menggunakan .cpp, misalnya.
Bagaimana dengan file header? Mereka dikompilasi dalam konteks file C atau C ++, sehingga tidak ada kompiler atau sistem pembangunan perlu membedakan .h dari .hpp. Namun, penyorotan sintaks dan lekukan otomatis oleh editor / IDE Anda dapat menjadi masalah, tetapi hal ini diperbaiki dengan mengaitkan semua file .h ke mode C ++. Sebagai contoh, konfigurasi emacs saya di Linux memuat semua file .h dalam mode C ++ dan mengedit header C dengan baik. Di luar itu, saat mencampurkan C dan C ++, Anda bisa mengikuti saran ini .
sumber
Seperti yang ditulis orang lain sebelum saya, pada akhirnya apa yang digunakan oleh proyek / tim / perusahaan Anda.
Secara pribadi, saya tidak menggunakan
cc
ekstensi, saya mencoba untuk menurunkan jumlah ekstensi dan tidak menambahnya, kecuali ada nilai yang jelas (menurut saya).Untuk apa nilainya, inilah yang saya gunakan :
c
- Hanya kode C murni, tanpa kelas atau struct dengan metode.cpp
- Kode C ++hpp
- Hanya kode tajuk. Implementasi ada di header (seperti kelas templat)h
- File header untuk C / C ++. Saya setuju perbedaan lain dapat dibuat, tetapi ketika saya menulis, saya mencoba untuk menurunkan jumlah ekstensi untuk kesederhanaan. Setidaknya dari proyek C ++ tempat saya bekerja,h
file untuk pure-C lebih jarang, oleh karena itu saya tidak ingin menambahkan ekstensi lain.sumber