什么';是gcc和g+之间的区别+/gcc-c++;? 在我看来,GCC可以同时处理C和C++项目,那么为什么需要G++/GCC-C++?< /P> P> G+C++与C++的区别是什么?根据我所知,G++使用正确的C++链接器选项,而GCC使用C链接器选项(这样你就可以得到未定义的引用等)。但是它不会自动在C++库中链接。 代码> G++将自动包含C++库;默认情况下,它也会编译扩展名为C源的文件,而不是C++。

什么';是gcc和g+之间的区别+/gcc-c++;? 在我看来,GCC可以同时处理C和C++项目,那么为什么需要G++/GCC-C++?< /P> P> G+C++与C++的区别是什么?根据我所知,G++使用正确的C++链接器选项,而GCC使用C链接器选项(这样你就可以得到未定义的引用等)。但是它不会自动在C++库中链接。 代码> G++将自动包含C++库;默认情况下,它也会编译扩展名为C源的文件,而不是C++。,gcc,g++,Gcc,G++,发件人: C++源文件通常使用后缀.C,.cc,.cpp,.cpp,.C++,.cp或.cxx;C++头文件通常使用 .Hh ,代码> HPP ,代码> h ,或(共享模板代码) .TCC < /代码>;经过预处理的C++文件使用后缀 .II/COD>。GCC识别这些文件的名称,并将它们编译为C++程序,即使调用编译器与编译C程序(通常使用GCC名称)相同的方式。 但是,GCC的使用不添加C++库。G++是一个调用GCC的程序,它处理< > C++ >代码> >代码> >代码> >代码> >

发件人:

C++源文件通常使用后缀
.C
.cc
.cpp
.cpp
.C++
.cp
.cxx
;C++头文件通常使用<代码> .Hh ,<>代码> HPP ,<>代码> h <代码>,或(共享模板代码)<代码> .TCC < /代码>;经过预处理的C++文件使用后缀<代码> .II/COD>。GCC识别这些文件的名称,并将它们编译为C++程序,即使调用编译器与编译C程序(通常使用GCC名称)相同的方式。 <>但是,GCC的使用不添加C++库。G++是一个调用GCC的程序,它处理< <代码> > C++ >代码> >代码> >代码> >代码> > i >代码>文件,而不是C源文件,除非使用-x,并自动指定与C++库的链接。这个程序在编译C标题文件时也很有用,它使用了<代码> .H/COD>扩展,用于C++编译。 例如,编译一个简单的C++程序,它可以写入<代码> STD::CUT流,我可以使用(MinGW在Windows上):< /P>
  • g++-o test.exe test.cpp
  • gcc-o test.exe test.cpp-lstdc++
但如果我尝试:

  • gcc-o test.exe test.cpp
我在链接时得到未定义的引用

对于另一个差异,使用以下C程序:

#include <stdlib.h>
#include <stdio.h>

int main() 
{
    int* new;
    int* p = malloc(sizeof(int));

    *p = 42;
    new = p;

    printf("The answer: %d\n", *new);

    return 0;
}

@gdb:有趣的是,我通常都会遇到问题,不过我猜你可能是通过手动传递正确的标志来解决的。可能。另外,g++和gcc-c++之间有什么区别?@gdb:我很困惑。。。这不是你最初的问题吗?因为它使用“new”作为变量名,呵呵。什么样的程序员使用“new”作为变量名?我更想知道的是,你是如何使用gcc成功编译这个讨厌的东西的…@JohnJohn这只是一个有效C(但无效C++)代码的例子,这就是为什么gcc编译它。gcc-C++似乎不是一个标准的编译器名称,至少现在是这样。通过谷歌搜索,我得到了这个问题作为实际包含该字符串的顶部链接,另外一个是rpmfind.net上列出的包。所以我不知道那是什么。。。可能只有一个符号链接。可能是
test.c: In function 'int main()':
test.c:6:10: error: expected unqualified-id before 'new'
test.c:6:10: error: expected initializer before 'new'
test.c:7:32: error: invalid conversion from 'void*' to 'int*'
test.c:10:9: error: expected type-specifier before '=' token
test.c:10:11: error: lvalue required as left operand of assignment
test.c:12:36: error: expected type-specifier before ')' token