c++ - c ,c++文件扩展名问题

标签 c++ c compilation

我在 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 扩展名与我们使用它们的原因相同,它们之间的确切区别是什么?它们为什么存在?

最佳答案

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

关于c++ - c ,c++文件扩展名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976191/

相关文章:

c - 如何在c中编程以使c中的char和int分开?

macos - 在 Mac OS X Maverick 上安装/编译 NASM 包

linux - 64 位的程序可以在 32 位机器上运行吗?

c++ - Eclipse 无法链接到 kernel32.lib

c++ - 现在的 C 和 C++ 编译器的线程保证是什么?

c++ - Win32 应用程序中的绘图问题

c - 解释 C 宏

hadoop - MapReduce错误类型不匹配:我正在尝试编写一个程序以查找最大编号。从一个CSV文件中,但是我得到了 key 不匹配

c++ - 如何访问 C 文件中的 C++ public bool 类成员(以验证)?

c++ - 如何在 while 循环中使用条件变量进行互斥锁?