win32_stdcall_cdecl - 8BitsCoding/RobotMentor GitHub Wiki
ํจ์์ Caller์ Callee์ ๋ํด์
ํจ์๋ ํจ์๋ฅผ ํธ์ถํ๋ Caller์ Callee๋ก ๊ตฌ๋ถ๋๋ค.
void main()
{
Sum(3, 5);
// Sum์ Callํ๋ main์ Caller๊ฐ ๋๋ค.
}
void Sum(int param_a, int param_b)
{
// ํธ์ถ๋๋ Sum์ Callee๊ฐ ๋๋ค.
}
__stdcall, __cdecl
์ฐ์ ๊ฐ ์ฐจ์ด์ ์ ์๋์ ๊ฐ๋ค.
__stdcall
- ๋งค๊ฐ๋ณ์ ์ ๋ฌ ์์ : ์ค๋ฅธ์ชฝ -> ์ผ์ชฝ
- ์คํ์ ๋ฆฌ ์ฑ ์ : Callee
- ํธ์ถ ๊ท์ ์ด ์ ์ฉ๋๋ ํจ์ : ๋งค๊ฐ๋ณ์์ ๊ฐ์๊ฐ ๊ณ ์ ๋ ํจ์
- ์ด๋ฆ ๋ณํ ๊ท์ : "_ํจ์๋ช @์ธ์๋ชฉ๋ก๋ฐ์ดํธ์"
- ์คํ ํ์ผ ํฌ๊ธฐ : ์๋ค
__cdecl
- ๋งค๊ฐ๋ณ์ ์ ๋ฌ ์์ : ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ
- ์คํ์ ๋ฆฌ ์ฑ ์ : Caller
- ํธ์ถ ๊ท์ ์ด ์ ์ฉ๋๋ ํจ์ : ๋งค๊ฐ๋ณ์์ ๊ฐ์๊ฐ ๊ฐ๋ณ์ ํจ์
- ์ด๋ฆ ๋ณํ ๊ท์ : "_ํจ์๋ช "
- ์คํ ํ์ผ ํฌ๊ธฐ : ํฌ๋ค
- (์ฐธ๊ณ 1) ๋งค๊ฐ๋ณ์์ ๊ฐ์๊ฐ ๊ฐ๋ณ์ ์ด๋ผ๋ ๋ง์ printf, scanf๋ฅผ ๋ ์ฌ๋ฆฌ๋ฉด ๋ ๊ฒ์ด๋ค.
- (์ฐธ๊ณ 2) ์คํ ํ์ผ์ ํฌ๊ธฐ์ ์ฐจ์ด๊ฐ ์๋ ์ด์ ๋ __stdcall์ ๋งค๊ฐ๋ณ์์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ด๊ธฐ์ ํ ๋ฒ ํจ์๋ฅผ ์์ฑํ๋ฉด ์ฌ ํ์ฉํ์ฌ ์ฌ์ฉ, __cdecl์ ๋งค๊ฐ๋ณ์๊ฐ ๋งค๋ณ ๋ณ๊ฒฝ๋๊ธฐ์ ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ์๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค.
WIN32์์ ์ด๊ฑธ ์ด๋ค๊ณ ??? ๋ ๋ณธ์ ์ด ์๋๋ฐ??
๋ณดํต ์๋์ ๊ฐ์ด define๋์ด ์๋ค.
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
_fastcall์ ๋ญ๊ฐ?
- ํจ์ ํธ์ถ ์ ๋งค๊ฐ๋ณ์๋ฅผ ์คํ์ด ์๋ ๋ ์ง์คํฐ๋ฆฌ์ ์ ์ฅ
- ์คํ์ ์ธ์๋ฅผ ์ ์ฅํ์ง ์๊ธฐ์ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ ์ํ์๋๊ฐ ๋น ๋ฅด๋ค.