1
#include <stdio.h>

void foo(auto int i); // line 3

int main()
{
    foo(10);
}

void foo(auto int i) // line 13
{
    printf("%d\n", i );
}

このコードのどこが間違っていますか? このプログラムはコンパイルされていません。

私が見ているエラーは次のとおりです。

main.c:3:27: error: storage class specified for parameter 'i'
     void foo(auto int i);

main.c:13:27: error: storage class specified for parameter 'i'
     void foo(auto int i)
4

2 に答える 2

3

autoストレージ クラス指定子です。これはローカル変数(自動ローカル変数)に使用されます。関数の引数の宣言には入れられません。

コンパイルすると、次のエラーが発生するはずです。

[Error] storage class specified for parameter 'i'  

Cでは、パラメータ宣言にストレージクラス指定子を入れることはできません(を除くregister

于 2014-02-03T16:57:52.710 に答える
2

パラメーター宣言で有効な唯一のストレージ クラス指定子registerです。これは、ドラフト C99 標準セクション 6.7.5.3 関数宣言子 (プロトタイプを含む)パラグラフ2からわかります。

パラメーター宣言で発生する唯一のストレージ クラス指定子は register です。

これはC116.7.6.3のセクションです。

ストレージ クラス指定子セクションの6.7.1 ストレージ クラス指定子は次のとおりです。

typedef
extern
static
auto
register
于 2014-02-03T17:05:34.323 に答える