.cc
と.cpp
ファイルの両方として保存されたC ++コードを見ました。2つの間に違いはありますか?
Googleのスタイルガイドを示唆しているようだ.cc
が、何の説明を提供していません。
私は主にLinuxシステム上のプログラムに関心があります。
lint
心配事、.C
C ++で、.c
Cは無理解の一切です.cc
か.cpp
。少なくともAIX 6.1では。
.cc
。
.cc
と.cpp
ファイルの両方として保存されたC ++コードを見ました。2つの間に違いはありますか?
Googleのスタイルガイドを示唆しているようだ.cc
が、何の説明を提供していません。
私は主にLinuxシステム上のプログラムに関心があります。
lint
心配事、.C
C ++で、.c
Cは無理解の一切です.cc
か.cpp
。少なくともAIX 6.1では。
.cc
。
回答:
結局のところ、C ++コンパイラはどちらの形式のファイルでも処理できるため、問題ではありません。それがチーム内の実際の問題である場合は、コインを投げて、実際の作業に移ります。
GNU GCCは、C ++ファイルとして以下の全てを認識し、関係なく、あなたがgccの通過またはg ++、それを呼び出すかどうかのC ++のコンパイルを使用します:.C
、.cc
、.cpp
、.CPP
、.c++
、.cp
、または.cxx
。
.C
GCCでは大文字と小文字が区別されることに注意してください。.c
これ.C
はCファイルですが、C ++ファイルです(コンパイラーにコンパイル内容を決定させる場合)。
GCCは、特別な処理を示す他のサフィックスもサポートし.ii
ます。たとえば、ファイルはC ++としてコンパイルされますが、前処理されません(個別に前処理されたコードを対象としています)。認識されているすべてのサフィックスは、gcc.gnu.orgで詳しく説明されています
makefileやその他のツールに使用する適切なアドバイス、コンパイラー以外のツールを検討しながら使用する拡張機能を決定することは、適切な答えを見つけるのに役立つ優れたアプローチです。
私が見つけたいくつかの.cc
vs .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
マイクロソフトのVisual C ++用途: .cpp
、.cxx
、.cc
Metrowerks社の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
、多くのオープンソースプロジェクト(主にUNIXライクに基づいている)が使用しています.cc
。
を使用したコーディングスタイルの例.cc
:
-*- C++ -*-
し、ヘッダーにタグを置くllvm.org/docs/CodingStandards.html ; Mozilla Coding Styleは.cpp / .hdeveloper.mozilla.org/en-US/docs/Mozilla/Developer_guide/…を推奨しています。KDEは.Hすぎ/ .cppファイルを使用しているように見えるquickgit.kde.org
使用されるその他のファイル拡張子には、.cxx
and .C
(大文字のC)が含まれます。Bjarne Stroustrupが最初に使用したと思います.C
。.cpp
Cプリプロセッサの名前なので、C ++でも使用されたのは残念です。
何も意味.cc
がないと言っている人はいますか?かもしれない。C ++は「C with Classes」として誕生しました。
真のこと.cc
と.cpp
ほとんどのUnixシステム(CコンパイラとCプリプロセッサそれぞれ)上のコマンド名でもあります。
私は.cpp
排他的に使用していますが、Windowsから始めました。.cc
私はそれをますます少なく見ていますが、よりUnixの慣習です。GNU makeにはルールがある.cpp
ので、それがおそらく推奨されます。デフォルトでは、Windowsとそれ以外の両方で機能します。一方、現代のC ++はヘッダーに拡張機能をまったく使用していません。私は本当にそれが好きではありません。私のプロジェクトはすべて.h
ヘッダーファイルに使用し、CとC ++の両方を可能な限りサポートしextern "C"
てテストしています__cplusplus
。
自分が.cc
取り組んだプロジェクトには個人的に見たことがありませんが、技術的にはコンパイラーは気にしません。
誰が気にかけるのかは、あなたのソースに取り組んでいる開発者なので、私の経験則は、あなたのチームが快適に使えるものを使うことです。「チーム」がオープンソースコミュニティである場合は、非常に一般的なものを選びます.cpp
。
.cc
C ++実装ファイルのファイル拡張子として使用されています
.C
そして、.cc
私が見た(いくつかの)Unix指向のC ++プログラムの標準のようです。私は常に.cpp
自分自身を使ってきました。なぜなら、私は本当にWindowsで作業しているだけで、それは永遠のようにそこの標準だからです。
.cpp
個人的には、「C Plus Plus」の略なのでお勧めします。もちろん、ファイル拡張子が頭字語であることは非常に重要ですが、この根拠が十分に説得力のない他の重要なことが証明されれば、シフトキーの非使用(.C
およびを除外.c++
)と、可能な場合は正規表現のメタ文字の回避(除外.c++
-残念ながら.
、もちろん避けられません。)
これは除外しない.cc
ので、実際には何も意味がない(またはそうなのか)にもかかわらず、Linux指向のコードにはおそらく良い選択です。
メイクファイル内で暗黙のルールを使用するには、.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
私は今これを知りました。
.cpp
ますが、これらは単なるファイルです。心配ない !:-)
.C
大文字と小文字を区別しないファイルシステムのシステムでは、使用に問題が生じる可能性があります。たとえば、over make
を使用.cc
することに関しては、特定の利点はないと思います.cpp
。Makefileは.cpp
、C ++ソースファイルで問題なく機能します。
私は新しい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 ++プロジェクトではh
、pure-Cのファイルはまれであるため、別の拡張子を追加したくありませんでした。