#include <iostream>
using namespace std;
// 오늘의 주제 : 호출 스택
void Func1()
{
cout << "Func1" << endl;
Func2(1, 2);
}
void Func2(int a, int b)
{
cout << "Func2" << endl;
Func3(10);
}
void Func3(float a)
{
cout << "Func3" << endl;
}
int main()
{
cout << "main" << endl;
Func1();
return 0;
}
error
cpp compiler는 위에서부터 아래로 컴파일러를 함. 그런데, Func1을 컴파일러 하는 도중 Func2에 대해서 물어보니 식별자를 찾을수 없다고 하는것. (Func3도 동일).
해결된 코드
#include <iostream>
using namespace std;
// 오늘의 주제 : 호출 스택
void Func1();
void Func2(int a, int b);
void Func3(float a);
int main()
{
cout << "main" << endl;
Func1();
return 0;
}
void Func1()
{
cout << "Func1" << endl;
Func2(1, 2);
}
void Func2(int a, int b)
{
cout << "Func2" << endl;
Func3(10);
}
void Func3(float a)
{
cout << "Func3" << endl;
}
함수 선언을 미리 해놓았기 때문에, Func1을 실행하면서 Func2를 찾는데 문제가 되지 않음. 함수 선언은 위에 먼저 해놓도록 하는 것을 습관화 하자.

호출 스택을 이용하여 내가 현재 위치가 어디서 왔는지 확인할 수 가 있다. 코드가 짧을때는 문제가 되지 않지만 코드가 복잡해지기 시작하면 꼭 익숙해져야 하는 부분이다.