2011-05-12 16 views
1

は、私はUbuntuの(10.04)にC++でプログラムを書いて、私はそれはウィットG ++ cat.ccそれが正常に動作し Cは、C++のファイル拡張子問題

をcomplileときにファイルas.ccそれを救いました。コードは問題なく動作します。 /tmp/cc8aU82C.o :(eh_frame + 0x12を)::。 collect2は__gxx_personality_v0' `への未定義参照:私はそれは私に従っているのエラーが表示さよりも、GCCでコンパイルしたときに

はなく、ldは1つの終了ステータスを返し

私のコードは以下の通りです:

#include<stdio.h> 
#include<stdlib.h> 
struct man 
{ 
    int a ; 
    int b; 
    void show(int x,int y); 
} 
}; 

int main() 
{ 
    man m; 
    int c=50; 
    int d; 
    m.show(c,d); 
    return 0; 
} 

void man::show(int x,int y) 
{ 
    printf("%d",x); 
} 

私はGCCでコンパイルしたときに今、誰もが間違って何が起こるか私に言うことができますか?

.cppと.cc拡張子の正確な違いは、使用する理由と同じ場合はどうなりますか?彼らはなぜ存在するのですか?

+4

コードにエラーがあります。構造体が終了した後にチェックしてください – manugupt1

+0

[__gxx_personality_v0とは何ですか?](http://stackoverflow.com/questions/329059/what-is-gxx-personality-v0-for) –

答えて

4

gccでコンパイルすると、C++ランタイムはデフォルトでリンクされていないため、表示されているようなリンカエラーが発生します。 gccとg ++はともに.cppと.cc拡張子を持つファイル(と私が忘れてしまったもの)をC++としてコンパイルします。ただし、Cの拡張子が.cのものは明示的にg ++ frorでC++コードを使用し、 gcc for C

+0

どうすればいいですか?このコードにリンクされたC++を入手してください。 – user513164

+0

@userプロセスのエントリと終了コード。 –

+0

'g ++'または 'gcc -lstdC++'を使用してください。 –

0

gccはCコンパイラではなく、C++コンパイラであり、g ++はC++コンパイラです。

0

一部の人が使用しているため存在します。 :-)

g ++でコンパイルすると、コードをC++としてコンパイルすると言います。その後、拡張は重要ではありません。

関連する問題