厳密に型指定された言語である 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
型パラメータです。 int
と double
の型が一致しないため、コンパイラは関数のシグネチャが一致しないというエラーを表示します。
修正方法は次のとおりです:
#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 サイトの他の関連記事を参照してください。