Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C/C++ 함수 호출 퍼즐?

<시간/>

이 C/C++ 함수 호출 퍼즐은 프로그래밍 언어 C와 C++/ 모두에서 메서드 호출 동작에 대해 더 많이 탐구하기 위한 퍼즐입니다.

C와 C++에서 메소드의 출력은 다릅니다. C와 C++에서 메소드 호출의 차이점이 무엇인지 알아보겠습니다.

예를 들어 아래 코드의 출력을 C와 C++로 확인해보자.

예시

void method() {
   // Print statement
}
int main() {
   method();
   method(2);
}

출력

C++의 경우 -

Error : too many arguments to function ‘void method()’

C의 경우 -

Program runs without any error.

출력 및 오류 이면의 논리

C++ 프로그래밍 언어용 컴파일러는 함수 method()를 매개변수가 없는 함수로 취급하는 반면 C 컴파일러의 동일한 함수는 컴파일러가 변수 인수를 허용할 수 있는 함수로 method() 함수를 처리하므로 매우 효율적으로 작동합니다.

이로 인해 i C++ 정의에 매개변수가 없는 메소드에 인수를 전달할 때 출력 창에 '오류:함수 'void func()'에 인수가 너무 많음'이라는 오류 프롬프트가 표시됩니다.

그리고 C에서는 전달된 인수가 수락되고 함수 내부의 코드가 실행됩니다.