강력한 형식의 언어인 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
및 char . 그러나 <code>main
함수에는 test
함수에 전달하는 매개변수가 하나만 있고 유형은 char
입니다. 이때 컴파일러는 test
함수에 대해 "함수 서명이 예상과 일치하지 않습니다" 오류를 표시합니다. test
函数的定义中,参数类型是int
和char
。但在main
函数中,我们传递给test
函数的参数只有一个,且类型为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; }2. 헤더 파일 참조 확인헤더 파일에 함수를 정의할 때 해당 함수를 사용하는 모든 소스 파일이 해당 헤더 파일을 찾을 수 있는지 확인하세요. 소스 파일에 이 헤더 파일이 포함되어 있지 않으면 컴파일러는 선언된 함수를 찾을 수 없습니다. 이 상황은 함수 서명 불일치 오류로 이어질 수도 있습니다. 이때 소스파일의 헤더파일이 올바르게 참조되고 있는지 확인해야 합니다. 3. 함수 호출 시 전달된 매개변수 유형을 확인하세요프로그램 작성 시 실수로 잘못된 매개변수 유형을 함수에 전달할 수 있습니다. 이 경우 컴파일러는 함수 서명이 일치하지 않는다는 오류도 보고합니다. 함수 호출 시 전달되는 매개변수의 유형을 확인하면 이 문제를 해결할 수 있습니다. 🎜🎜예: 🎜rrreee🎜
main
함수의 test()
호출에서 double
유형의 매개변수를 에 전달했습니다. >test
함수이고, test
함수의 첫 번째 매개변수는 int
유형의 매개변수입니다. int
및 double
유형이 일치하지 않으므로 컴파일러는 함수 서명이 일치하지 않는다는 오류 메시지를 표시합니다. 🎜🎜수정 방법은 다음과 같습니다. 🎜rrreee🎜4. 함수 반환 유형을 확인하세요🎜🎜함수의 반환 유형도 함수에서 선언한 반환 유형과 일치해야 합니다. 일관성이 없으면 컴파일러는 함수 서명이 일치하지 않는다는 오류 메시지도 표시합니다. 이때 함수 반환 유형이 함수 선언과 일치하는지 확인하고 필요한 경우 수정해야 합니다. 🎜🎜위는 함수 서명 불일치 오류에 대한 몇 가지 고전적인 솔루션입니다. 프로그램을 작성할 때 이 오류를 방지하려면 함수 서명 일치 규칙을 따라야 합니다. 이런 종류의 오류가 발생하면 위의 측면에서 문제를 해결하고 문제를 신속하게 해결할 수 있습니다. 🎜위 내용은 C++ 컴파일 오류: 함수 서명이 예상과 일치하지 않습니다. 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!