이 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에서는 전달된 인수가 수락되고 함수 내부의 코드가 실행됩니다.