为什么我在 Linux 中使用 gcc 会出现错误,而使用 g++ 却不会出现错误

问题描述 投票:0回答:3

即使此文件保存为

gcc
,下面的代码行也会在
check.c
编译器中出现错误。错误位于
void swap_address(int& a, int& b)
as

错误:“&”标记之前应有“;”、“,”或“)”

我使用了这个命令来编译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;
}
gcc compiler-errors
3个回答
1
投票

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

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


1
投票

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


1
投票

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

您使用

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

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

© www.soinside.com 2019 - 2024. All rights reserved.