即使此文件另存为gcc,下面的代码行也会给check.c编译器错误。错误出现在void swap_address(int& a, int& b)行上
错误:在“&” token 之前可能出现“;”,“或”)
我已经使用此命令来编译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;
}
请您参考如下方法:
swap_address()具有引用参数,文件扩展名为“.c”,因此gcc假定它是C文件,并且由于引用参数不属于C,因此会产生错误。g++将文件视为C++,因此对引用参数感到满意。




