C++コードが.cc
ファイルと.cpp
ファイルの両方として保存されているのを見ました。両者に違いはありますか?
Googleスタイルガイド は.cc
を示唆しているようですが、説明はありません。
私は主にLinuxシステム上のプログラムに関心があります。
C++コンパイラはどちらの形式でもファイルを扱うことができるので、一日の終わりには問題になりません。それがあなたのチーム内の本当の問題であるならば、コインを弾いてそして実際の仕事に移ってください。
GNU GCCは、次のすべてをC++ファイルとして認識し、gccまたはg ++のどちらで呼び出すかにかかわらず、C++コンパイルを使用します。.C
、.cc
、.cpp
、.CPP
、.c++
、.cp
、または.cxx
。
GCCでは.C
- 大文字と小文字が区別されることに注意してください。.c
はCファイルですが、.C
はC++ファイルです(コンパイル対象をコンパイラに決定させる場合)。
GCCは特別な処理を示すために他の接尾辞もサポートします。例えば.ii
ファイルはC++としてコンパイルされますが、前処理はされません(別々に前処理されたコード用です)。認識されているすべてのサフィックスの詳細は gcc.gnu.org にあります。
どちらの拡張子を使用するかを決定しながら、非コンパイラツールを検討しながら、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
を使うのが良いと思います。
私の知る限り、.cpp
はC++の推奨拡張子です。 Cと区別するために、C++ヘッダーに.hpp
を使用することを推奨する人さえいます。
コンパイラはあなたが何をしても構いませんが、個人的な好みです。
私は個人的には実装ファイルに.cc
拡張子、ヘッダに.hh
、そしてインライン/テンプレートに.inl
を使います。
前述のように、それは主に好みの問題です。
これまで見てきたものから 、.cc
はもっと " オープンソースプロジェクト指向 "であるように見えますが、.cpp
はそうであるように思われます。もっとWindowish。
---編集
述べたように、これは "私が見たものから" です、それは間違っているかもしれません。私が取り組んできたすべてのWindowsプロジェクトが.cpp
を使っていたこと、そして多くのオープンソースプロジェクト(これは主にunixに似ています)が.cc
を使っていることだけです。
.cc
を使ったコーディングスタイルの例:
使用されるその他のファイル拡張子には、.cxx
および.C
(大文字のC)があります。 Bjarne Stroustrupはもともと.C
を使っていたと思います。 .cpp
はCプリプロセッサの名前なので、C++でも使用されたのは残念です。
プロジェクト/チームによって使用されている規約に従ってください。
もう1つのオプションは.cxx
で、ここでx
は45°プラス回転したものになります。
Windows、Mac、Linuxはすべて.c++
をサポートしているので、それを使うべきです。
私が取り組んできたどのプロジェクトでも私は個人的に.cc
を見たことがありませんが、技術的にはコンパイラは気にしません。
誰が気にするかはあなたの情報源に取り組んでいる開発者である、それで私の経験則はあなたのチームが満足しているもので行くことである。あなたの "チーム"がオープンソースコミュニティであるなら、非常に一般的なものを使ってください。そのうちの.cpp
がお気に入りのようです。
何人かの人々が.cc
を意味しないと言いますか?かもしれない。 C++は「C with Classes」として誕生しました。
.cc
と.cpp
は、ほとんどのUNIXシステム(それぞれcコンパイラとcプリプロセッサ)でもコマンド名です。
私は.cpp
を独占的に使いますが、私はWindowsで始めました。 .cc
はもっとUnixの慣習ですが、私はそれをますます少なくしています。 GNU makeには.cpp
の規則があるので、おそらく推奨されます。Windowsでもそれ以外のすべてのものでもデフォルトで機能します。一方、現代のC++ではヘッダにはまったく拡張子を使用していませんが、私はそれが嫌いです。私のプロジェクトはすべてヘッダーファイルに.h
を使用しており、extern "C"
および__cplusplus
のテストを通じて可能な限りCとC++の両方をサポートしています。
どの拡張子を使用するかは関係ありません。あなたがもっと好きな方を選んで、命名と一致するようにしてください。この命名規則で私が知っている唯一の例外は、.cc
ファイルをコンパイルするためにWinDDK
を作成できなかったことです(または今はWDK
ですか?)。 Linuxでは、それはほとんど問題ありません。
ほとんどのスタイル規約と同様に、重要なことは2つだけです。
これらは矛盾しているように見えるかもしれませんが、それぞれ独自の理由で価値があります。
.C
と.cc
は私が見た(数少ない)Unix指向のC++プログラムにとって標準的なようです。私はいつも自分自身で.cpp
を使ってきました、なぜなら私は実際にはWindows上でしか動作せず、それが永遠のようにそこから標準となってきたからです。
個人的には.cpp
をお勧めします。なぜならそれは "C Plus Plus"を表します。もちろんファイル拡張子が頭字語であることが非常に重要ですが、この論理的根拠が他の重要なことがシフトキーの不使用(.C
および.c++
を除外)および正規表現メタ文字の回避(可能な限り除外)が不十分であることが証明できます。 .c++
- 残念ながら、もちろん.
を避けることはできません。
これは.cc
を排除しないので、たとえそれが本当に何のためにも成り立たないとしても(あるいはそれをしますか?)、それはおそらくLinux指向のコードのための良い選択です。
私はそれぞれsourceとheaderに.Cと.hを使います。その選択のいいところは、コマンドラインで、すべてのコードファイルを選択するのに*.[Ch]
を使いやすいということです。大文字と小文字を区別しないファイルシステムでは.C
を使用することは問題になるかもしれませんが、同じディレクトリにfoo.c
とfoo.C
がある場合、とにかくあなたが得るものに値します:)
cpp = c plus plusそして私の好みです、ccまたはcxxは何の略ですか?
.cc拡張子は、メイクファイル内で暗黙のルールを使用するために必要です。これらのリンクを調べて、メイクファイルをよりよく理解してください。ただし、.cc拡張子の有用性を明確に示しているので、主に2番目のファイルを見てください。
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
私は今これを知ったばかりです。
私は新しい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 ++プログラムで使用されるソースコードファイルの拡張子です。これらのCCファイルは、さまざまなテキストエディタを使用して編集できますが、読み取ることはできません。