[C++] 호출 스택
호출 스택
인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다.
😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기!
호출 스택1
더보기

#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; }

순서가 안 맞으면 빌드가 안 된다.
위에서부터 아래로 순차적으로 빌드를 한다.
Func1에서 Func2를 호출할 때 Func2가 위에 없어서 문제가 생기는 것이다.
호출 스택2
더보기

#include <iostream> using namespace std; // 호출 스택 void Func3(float a) { cout << "Func3" << endl; } void Func2(int a, int b) { cout << "Func2" << endl; Func3(10); } void Func1() { cout << "Func1" << endl; Func2(1, 2); } int main() { cout << "main" << endl; Func1(); return 0; }

이번에는 순서를 맞춰서 정상적으로 빌드를 한다.
호출 스택3
더보기


#include <iostream> using namespace std; // 함수 선언 void Func1(); void Func2(int hp, int mp); // 함수의 모양만 만들어주면 된다. 밑의 void Func2(int a, int b)처럼 a, b일 필요는 없다. void Func3(float a); int main() { cout << "main" << endl; Func1(); return 0; } void Func1() { cout << "Func1" << endl; // [Assembly Language] push 2 // [Assembly Language] push 1 // [Assembly Language] call Func2 Func2(1, 2); Func3(10.0f); } void Func2(int a, int b) { cout << "Func2" << endl; Func3(10); } void Func3(float a) { cout << "Func3" << endl; }


함수 선언을 전방에서 한다.
'⭐ Programming > C++' 카테고리의 다른 글
[C++] 오버 로딩, 오버 로딩과 오버라이딩의 차이, 함수 마무리 (0) | 2022.03.22 |
---|---|
[C++] 호출 스택 (0) | 2022.03.22 |
[C++] 지역변수와 값 전달 (0) | 2022.03.21 |
[C++] Stack Frame 스택 프레임 (0) | 2022.03.21 |
[C++] 함수기초 (0) | 2022.03.21 |
댓글
이 글 공유하기
다른 글
-
[C++] 오버 로딩, 오버 로딩과 오버라이딩의 차이, 함수 마무리
[C++] 오버 로딩, 오버 로딩과 오버라이딩의 차이, 함수 마무리
2022.03.22 -
[C++] 호출 스택
[C++] 호출 스택
2022.03.22 -
[C++] 지역변수와 값 전달
[C++] 지역변수와 값 전달
2022.03.21 -
[C++] Stack Frame 스택 프레임
[C++] Stack Frame 스택 프레임
2022.03.21
댓글을 사용할 수 없습니다.