为什么我在使用gcc时遇到错误,而在Linux中却没有使用g ++

时间:2013-08-23 04:52:01

标签: gcc compiler-construction compiler-errors

下面的代码行使用gcc编译器发出错误,即使此文件保存为check.c也是如此。错误位于void swap_address(int& a, int& b)

错误:预期';',','或')'在'&'标记之前

我已使用此命令编译C文件:gcc -o check check.c

但如果我使用g++编译器使用g++ -o check check.c

,相同的代码工作正常

请告诉我g++而不是gcc的原因。

代码:

#include <stdio.h>
void swap_value(int a, int b)
{
    a=a+b;
    b=a-b;
    a=a-b;
}
void swap_address(int& a, int& b)
{
    a=a+b;
    b=a-b;
    a=a-b;
}
int main()
{
    int i=5,j=3;    
    swap_value(i,j);
    printf("%d%d\n", i, j);
    swap_address(i,j);
    printf("%d%d\n", i, j);
    return 0;
}

3 个答案:

答案 0 :(得分:1)

引用是C ++功能,C不支持它们。

答案 1 :(得分:1)

swap_address()具有参考参数,该文件具有“.c”扩展名,因此gcc假设它是一个C文件并产生错误,因为参考参数不是C的一部分。

g++将文件视为C ++,因此对参考参数感到满意。

答案 2 :(得分:1)

C和C ++是不同的编程语言。

您使用.c扩展名保存了文件,这使得gcc可执行文件将其视为C语言文件。同时,您尝试在代码中使用C ++功能(例如引用)。难怪它不能用gcc进行编译。

g++可执行文件无条件地将所有文件视为C ++文件,无论扩展名如何,这就是它与g++编译的原因。