C言語で「incompatible types when returning type ‘xxx’ but ‘yyy’ was expected」というエラーが表示される場合、その関数が返す値の型が、定義されている型と異なることが原因です。
例えば、次のような関数が定義されている場合
int add(int a, int b) { return a + b; }
この関数は、2つの整数を受け取り、それらを加算した結果を返すものです。定義されている型は、整数型int
です。
しかし、次のように実装すると、「incompatible types when returning type ‘xxx’ but ‘yyy’ was expected」というエラーが表示されます。
int add(int a, int b) { return a + b + "hello"; }
このように、文字列リテラル"hello"
を加算しています。
しかし、文字列リテラルは文字列を表すデータ型であるchar *
型であり、整数型とは互換性がないため、「incompatible types when returning type ‘xxx’ but ‘yyy’ was expected」というエラーが表示されます。
コメント