我在ubuntu(10.04)上用c ++编写程序,并在我编译时将其保存为.cc文件
它有机会g ++ cat.cc它运行正常。代码工作正常没有问题。
但是当我使用gcc编译它时它会显示以下错误:/tmp/cc8aU82C.o :(。eh_frame + 0x12):未定义引用`__gxx_personality_v0' collect2: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扩展名之间的确切区别是什么?如果它们与我们使用它们的原因相同?他们为什么存在?
答案 0 :(得分:4)
如果使用gcc进行编译,则默认情况下不会链接C ++运行时,因此您将看到链接器错误,就像您看到的那样。 gcc和g ++都将编译带有.cpp和.cc扩展名的文件(以及我忘记的其他文件)作为C ++,以及那些扩展名为.c的文件。但最好是明确的并使用g ++来表达你的C ++代码和gcc for C.
答案 1 :(得分:0)
gcc是C编译器而不是C ++编译器,g ++是C ++编译器。
答案 2 :(得分:0)
它们的存在是因为有些人使用过它们。 : - )
使用g ++编译时,您说要将代码编译为C ++。然后扩展无关紧要。