下面的代码行使用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;
}
答案 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++
编译的原因。