2011-08-14 33 views
2

コンパイラは、テキストファイルのソースコードの構文をチェックします。拡張子.cまたは.cppで保存する必要があるのはなぜですか?ソースファイルの拡張子

これをgccで試しましたが、.c.cpp以外の拡張子のファイルはコンパイルされません!!

+0

申し訳ありませんが誤植...質問を編集しました –

+2

'gcc -xc hello.txt' – pmg

+0

他を見る:http://stackoverflow.com/questions/172587/what-is-the-difference-between-g -and-gcc/173007#173007 –

答えて

3

コンパイラは、テキストを見ることでファイル内のコードの言語を推測することはありません。コンパイルする対象を指定する必要があります。ほぼすべてのコンパイラはこれをフラグまたはとして渡すことができます。ファイル拡張子からそれを推測します。 .cppファイルを純粋なCとしてコンパイルするには、コンパイラに適切なフラグを渡すことで、コンパイラはそれを推論する必要がないので、自由に自由です。しかし、これは、次の大会では、あなた(旗が回らない)と他のプログラマー(速い言語を知っている人)の両方に役立つ状況です。ls

4

-xオプションで言語を指定しないと、GCC(あなたのタグに名前を付けます)がファイル拡張子をチェックします。

拡張子が認識されない場合、ファイルは直接リンカーに渡されます。

1

これは必須ではありません。便利です。任意の拡張子を使用できますが、標準の拡張子を使用すると、コンパイラ、オペレーティングシステム、および他のプログラマがファイルの内容を簡単に知ることができます。

1

コンパイラは通常、拡張子を使用してファイルに含める言語を決定します。したがって、.cの場合、ファイルはCソースコードを含むものとして扱われます。 .C(大文字、大文字)、.cc.cppなどの場合、C++として扱います。コンパイラによっては、それはまた、通常(例えば、.pas.f.csなど)

0

他の拡張子を認識かもしれない、.cファイルは、Cが含まれていると.cppファイルは、C++が含まれています。

コンパイラは、拡張子を使用して、ソースファイルでどの言語を見つけるかを決定することがよくあります。純粋なCを含むファイルでも、拡張子が.cppで保存されていても、通常はC++と解釈されます。ほとんどの場合、C++はCのスーパーセットですが、これらの言語には微妙な違いがあります。そのため、コードの扱いが異なる可能性があります。

ほとんどのコンパイラには、任意のファイルを特定の言語として扱うことができます。これがどのように行われるかは、コンパイラによって異なります。たとえば、GCCでは-xオプションが使用されます。

FWIW、私はGCCも.ccをC++として受け入れていると思います。しかし、これは過去のことかもしれません。