1

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;
}
4

3 回答 3

1

引用是 C++ 的一个特性,它们在 C 中不受支持。

于 2013-08-23T04:54:15.590 回答
1

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

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

于 2013-08-23T04:56:00.130 回答
1

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

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

g++可执行文件无条件地将所有文件视为 C++ 文件,无论扩展名如何,这就是它使用g++.

于 2013-08-23T04:58:06.673 回答