C++

함수 호출 규약

Nin 2020. 12. 13. 01:47

복습)

#define : 매크로 기능으로 치환해주는 기능을 한다

 

class Test
{
private:  //명시적 표현
   int a;
   int b;  
   int c;
public: 
   Test()  //생성자
   {
   
   }
   
void Func()
   {
      this->a = 400;
   }
};

void GlobalFunc() //__cdecl 호출 규약이 생략되 있다
{
	int a = 0;
}

int main()
{
	GlobalFunc();
}

this를 사용하는 함수 즉 멤버 함수들은 void __thiscall Func() 에서 __thiscall 이 생략되있다.

이거를 함수 호출 규약이라고 한다.

C++에서는 가장 유명한 함수호출규약이 3가지 있다.

__thiscall : 클래스 내부에서 this를 사용하는 함수들이 사용

__stdcall : c++기본 정적 함수들이 사용

__cdecl : c기반 전역함수들이 사용

 

위의 코드에서 GlobalFunc()는 main이 실행해 줬고 이를 호출자라 한다.

함수의 사용이 끝나면 함수를 정리해주는데 이를 정리자라고 한다.

함수호출규약 호출자(함수 메모리를 넣어주는) 정리자
__thiscall  호출자(main) 호출자(main)
__stdcall  호출자(main) 자기자신(GlobalFunc)
__cdecl 호출자(main) 호출자(main)

 

기계어를 잘 모르기 때문에 일단 외워놓자 !!

'C++' 카테고리의 다른 글

OverLoading , 컴파일 4단계,네임맹글링  (0) 2020.12.13
nullptrObject  (0) 2020.12.13
ObjectInit,Constructor(생성자)  (0) 2020.12.13
접근제한자  (0) 2020.12.13
This  (0) 2020.12.12