ホームページ  >  記事  >  バックエンド開発  >  C++ コンパイル エラー: 関数のシグネチャが予期したものと一致しません。解決方法は?

C++ コンパイル エラー: 関数のシグネチャが予期したものと一致しません。解決方法は?

WBOY
WBOYオリジナル
2023-08-22 16:03:39904ブラウズ

C++ コンパイル エラー: 関数のシグネチャが予期したものと一致しません。解決方法は?

厳密に型指定された言語である C は、プログラムを作成するときに厳密な型一致のルールに従う必要があります。つまり、関数を定義するときは、関数の宣言および関数呼び出し中に、関数のパラメーターの型と戻り値の型が一貫していることを確認する必要があります。それ以外の場合、コンパイラはエラー メッセージ「関数のシグネチャが予期したものと一致しません」をスローします。このエラーは通常、渡されたパラメータの型が間違っている場合、戻り値の型が一致しない場合などに発生します。

それでは、プログラムを作成しているときにこの種のエラーが発生した場合、どのように解決すればよいでしょうか?ここでは、一般的な解決策をいくつか紹介します。

1. 関数のシグネチャと呼び出しメソッドの確認

関数のシグネチャには、関数名、パラメータの型、戻り値の型などが含まれます。関数が異なれば、シグネチャも異なる必要があります。まず、関数のシグネチャが、関数の呼び出し時に使用されたものと一致することを確認する必要があります。関数のシグネチャが呼び出しメソッドと一致しない場合は、変更する必要があります。変更方法には、パラメータの型や戻り値の型の変更などが含まれます。たとえば、次のコードは関数シグネチャ不一致エラーを引き起こす可能性があります:

#include<iostream>
using namespace std;
void test(int a,char b)
{
    cout<<"int="<<a<<endl<<"char="<<b<<endl;
}
int main()
{
    char c='a';
    test(c);
    return 0;
}

関数 test の定義では、パラメータの型は int です。文字。ただし、main 関数では、test 関数に渡すパラメーターは 1 つだけで、型は char です。このとき、コンパイラは、test 関数に対して「関数シグネチャが予期したものと一致しません」というエラーを表示します。

修正方法は以下の通りです:

#include<iostream>
using namespace std;
void test(char a)
{
    cout<<"char="<<a<<endl;
}
int main()
{
    char c='a';
    test(c);
    return 0;
}

2. ヘッダーファイルのリファレンスを確認してください

ヘッダーファイルに関数を定義する場合、使用するすべてのソースファイルが正しく定義されていることを確認してください。この関数は先頭ファイルを見つけることができます。ソース ファイルにこのヘッダー ファイルが含まれていない場合、コンパイラは宣言された関数を見つけることができません。この状況は、関数シグネチャ不一致エラーを引き起こす可能性もあります。このとき、ソースファイル内のヘッダファイルが正しく参照されているかを確認する必要があります。

3. 関数呼び出し時に渡されるパラメータの型を確認する

プログラムを作成するときに、誤って間違ったパラメータの型を関数に渡してしまう可能性があります。この場合、コンパイラは関数のシグネチャが一致しないというエラーも報告します。この問題は、関数の呼び出し時に渡されるパラメータの型を確認することで解決できます。

例:

#include<iostream>
using namespace std;
void test(int a,char b)
{
    cout<<"int="<<a<<endl<<"char="<<b<<endl;
}
int main()
{
    double d= 1.5;
    char c= 'a';
    test(d,c);
    return 0;
}

main 関数の test() 呼び出しでは、double 型を渡します。パラメータは test 関数に与えられ、test 関数の最初のパラメータは int 型パラメータです。 intdouble の型が一致しないため、コンパイラは関数のシグネチャが一致しないというエラーを表示します。

修正方法は次のとおりです:

#include<iostream>
using namespace std;
void test(double a,char b)//修改参数类型为double
{
    cout<<"double="<<a<<endl<<"char="<<b<<endl;
}
int main()
{
    double d= 1.5;
    char c= 'a';
    test(d,c);
    return 0;
}

4. 関数の戻り値の型を確認する

関数の戻り値の型も、 で宣言された戻り値の型と一致している必要があります。関数。それらが矛盾している場合、コンパイラは関数シグネチャが一致しないというエラー メッセージもスローします。この時点で、関数の戻り値の型が関数宣言と一致しているかどうかを確認し、必要に応じて変更する必要があります。

上記は、関数シグネチャ不一致エラーに対するいくつかの古典的な解決策です。プログラムを作成するときは、このエラーを回避するために関数シグネチャの一致ルールに従う必要があります。この種のエラーが発生した場合、上記の側面からトラブルシューティングを行い、問題を迅速に解決できます。

以上がC++ コンパイル エラー: 関数のシグネチャが予期したものと一致しません。解決方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。