0

構造体(構造体ポインタではない)を返す関数がありますが、同じ型の構造体変数に戻り値を設定しようとすると、「互換性のない型」が表示されます。

構造体の定義と関数の実装は次のようになります。

typedef struct{
    int ssn;
    char FirstName[12];
    char LastName[12];
    int income;
} MyRecord;

MyRecord parseNextRecord()
{
    MyRecord record;
    // parse and initialize
    return record;
}

そして、これは私のメイン関数内からそれを呼び出すことです:

MyRecord nextRecord;
nextRecord = parseNextRecord(); // "error: incompatible types in assignment"

これについて本当に困惑しました。よろしくお願いします。

4

1 に答える 1

3

ヘッダーファイルが表示されない場合、考えられる原因はmain()、関数の宣言が表示されないためparseNextRecord()、コンパイラーが戻り型が。の暗黙的な宣言を生成することですint。これにより、にを割り当てることができないため、互換性のない割り当てエラーが発生しintますMyRecord。解決するには、ヘッダーファイルに宣言を追加します。

extern MyRecord parseNextRecord();
于 2012-10-30T17:52:31.450 に答える