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++ は異なるプログラミング言語です。

.c拡張子を付けてファイルを保存すると、gcc実行可能になり、C 言語ファイルとして扱われます。その間、コードで C++ 機能を使用しようとします (参照など)。でコンパイルされないのも不思議ではありませんgcc

g++実行可能ファイルは、拡張子に関係なく、無条件にすべてのファイルを C++ ファイルとして扱いますg++

于 2013-08-23T04:58:06.673 に答える
1

参照は C++ の機能であり、C ではサポートされていません。

于 2013-08-23T04:54:15.590 に答える
1

swap_address()参照パラメータがあります ファイルの拡張子は「.c」であるgccため、参照パラメータはCの一部ではないため、Cファイルであると想定され、エラーが発生します。

g++ファイルは C++ であると見なされるため、参照パラメータに問題はありません。

于 2013-08-23T04:56:00.130 に答える