web-dev-qa-db-ja.com

C++コードファイル拡張子? .ccと.cpp

C++コードが.ccファイルと.cppファイルの両方として保存されているのを見ました。両者に違いはありますか?

Googleスタイルガイド.ccを示唆しているようですが、説明はありません。

私は主にLinuxシステム上のプログラムに関心があります。

495
Jessica

C++コンパイラはどちらの形式でもファイルを扱うことができるので、一日の終わりには問題になりません。それがあなたのチーム内の本当の問題であるならば、コインを弾いてそして実際の仕事に移ってください。

587
JaredPar

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 にあります。

249
Clifford

どちらの拡張子を使用するかを決定しながら、非コンパイラツールを検討しながら、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を使うのが良いと思います。

166
John S.

私の知る限り、.cppはC++の推奨拡張子です。 Cと区別するために、C++ヘッダーに.hppを使用することを推奨する人さえいます。

コンパイラはあなたが何をしても構いませんが、個人的な好みです。

67
Ryu

私は個人的には実装ファイルに.cc拡張子、ヘッダに.hh、そしてインライン/テンプレートに.inlを使います。

前述のように、それは主に好みの問題です。

これまで見てきたものから .ccはもっと " オープンソースプロジェクト指向 "であるように見えますが、.cppはそうであるように思われます。もっとWindowish。

---編集

述べたように、これは "私が見たものから" です、それは間違っているかもしれません。私が取り組んできたすべてのWindowsプロジェクトが.cppを使っていたこと、そして多くのオープンソースプロジェクト(これは主にunixに似ています)が.ccを使っていることだけです。

.ccを使ったコーディングスタイルの例:

27
NewbiZ

使用されるその他のファイル拡張子には、.cxxおよび.C(大文字のC)があります。 Bjarne Stroustrupはもともと.Cを使っていたと思います。 .cppはCプリプロセッサの名前なので、C++でも使用されたのは残念です。

16
user181548

プロジェクト/チームによって使用されている規約に従ってください。

11
Ben S

もう1つのオプションは.cxxで、ここでxは45°プラス回転したものになります。

Windows、Mac、Linuxはすべて.c++をサポートしているので、それを使うべきです。

11
Roland Rabien

私が取り組んできたどのプロジェクトでも私は個人的に.ccを見たことがありませんが、技術的にはコンパイラは気にしません。

誰が気にするかはあなたの情報源に取り組んでいる開発者である、それで私の経験則はあなたのチームが満足しているもので行くことである。あなたの "チーム"がオープンソースコミュニティであるなら、非常に一般的なものを使ってください。そのうちの.cppがお気に入りのようです。

9
Toji

何人かの人々が.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++の両方をサポートしています。

9
Ben Voigt

どの拡張子を使用するかは関係ありません。あなたがもっと好きな方を選んで、命名と一致するようにしてください。この命名規則で私が知っている唯一の例外は、.ccファイルをコンパイルするためにWinDDKを作成できなかったことです(または今はWDKですか?)。 Linuxでは、それはほとんど問題ありません。

8
Dmitry

ほとんどのスタイル規約と同様に、重要なことは2つだけです。

  1. 可能な限り、使用しているものと一貫性を保ってください。
  2. 使用されている特定の選択に応じて何かを設計しないでください。

これらは矛盾しているように見えるかもしれませんが、それぞれ独自の理由で価値があります。

8
Alan

.C.ccは私が見た(数少ない)Unix指向のC++プログラムにとって標準的なようです。私はいつも自分自身で.cppを使ってきました、なぜなら私は実際にはWindows上でしか動作せず、それが永遠のようにそこから標準となってきたからです。

個人的には.cppをお勧めします。なぜならそれは "C Plus Plus"を表します。もちろんファイル拡張子が頭字語であることが非常に重要ですが、この論理的根拠が他の重要なことがシフトキーの不使用(.Cおよび.c++を除外)および正規表現メタ文字の回避(可能な限り除外)が不十分であることが証明できます。 .c++ - 残念ながら、もちろん.を避けることはできません。

これは.ccを排除しないので、たとえそれが本当に何のためにも成り立たないとしても(あるいはそれをしますか?)、それはおそらくLinux指向のコードのための良い選択です。

7

私はそれぞれsourceとheaderに.Cと.hを使います。その選択のいいところは、コマンドラインで、すべてのコードファイルを選択するのに*.[Ch]を使いやすいということです。大文字と小文字を区別しないファイルシステムでは.Cを使用することは問題になるかもしれませんが、同じディレクトリにfoo.cfoo.Cがある場合、とにかくあなたが得るものに値します:)

7
KeithB

cpp = c plus plusそして私の好みです、ccまたはcxxは何の略ですか?

6
Andrew

.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

私は今これを知ったばかりです。

6
Kyle

私は新しい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 が最も抵抗の少ないパスです。

0
Armorix

_ cc _ は、c ++プログラムで使用されるソースコードファイルの拡張子です。これらのCCファイルは、さまざまなテキストエディタを使用して編集できますが、読み取ることはできません。

0
Sanjay Selvaraj