即使此文件另存为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++,因此对引用参数感到满意。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!