【问题标题】:c ,c++ file extension problemc,c++文件扩展名问题
【发布时间】:2011-05-12 09:48:57
【问题描述】:

我在ubuntu(10.04)上用c++写了一个程序,编译时保存为.cc文件

它与 g++ cat.cc 一起工作正常。代码运行正常没有问题。

但是当我使用 gcc 编译它时,它会显示以下错误:/tmp/cc8aU82C.o:(.eh_frame+0x12): undefined reference to `__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 扩展名与我们使用它们的原因相同,那么它们之间的确切区别是什么?它们为什么存在?

【问题讨论】:

标签: c++ c compilation


【解决方案1】:

如果您使用 gcc 编译,默认情况下不会链接 C++ 运行时,因此您会遇到与您所看到的一样的链接器错误。 gcc 和 g++ 都将带有 .cpp 和 .cc 扩展名的文件(以及我忘记的其他文件)编译为 C++,并将带有 .c 扩展名的文件编译为 C。但最好是明确的并将 g++ 用于您的 C++ 代码和用于 C 的 gcc。

【讨论】:

  • 使用g++gcc -lstdc++
  • IIRC,g++ 会将带有.c 的文件编译为 C++。实际上,你应该用gcc编译以.c结尾的文件,用g++编译以.cpp.cc.C结尾的文件(尽管gcc也可以);链接时,如果要链接的文件中有C++源代码,请使用g++
【解决方案2】:

gcc 是 C 编译器而不是 C++ 编译器,g++ 是 C++ 编译器。

【讨论】:

    【解决方案3】:

    它们的存在是因为有些人使用过它们。 :-)

    当你用 g++ 编译时,你说你想把代码编译成 C++。那么扩展无关紧要。

    【讨论】:

      猜你喜欢
      • 2014-11-05
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 2011-02-16
      • 2015-09-12
      • 2021-03-01
      相关资源
      最近更新 更多