๐ ํจ์์ ์ธ๋ผ์ธํ
ํจ์์ ๋ชธ์ฒด๊ฐ ํจ์์ ํธ์ถ๋ฌธ์ ๋์ ํ๋ค.
๐ ๋งคํฌ๋ก ํจ์
#define SQUARE(x) ((x)*(x))
int main(void){
cout << SQUARE(5) << endl; // ์ ํ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ((5)*(5))
return 0;
}
์ฅ์ ํํจ์์ ์๋์ ์ผ๋ก ์คํ์๋์ ์ด์ ์ด ์๋ค.
๋จ์ ํจ์์ ์ ์ ๋ฐฉ์์ด ์ผ๋ฐํจ์์ ๋นํด ๋ณต์กํ๋ค. ๋ฐ๋ผ์ ๋ณต์กํ ํจ์์ ์ ์์๋ ํ๊ณ๊ฐ ์๋ค.
๐ฉ inline ํจ์
inline int SQUARE(int x){
return x*x;
}
int main(void){
cout << SQUARE(5) << endl; // 25
return 0;
}
๋งคํฌ๋ก๋ฅผ ์ด์ฉํ ํจ์์ ์ธ๋ผ์ธํ๋ '์ ์ฒ๋ฆฌ๊ธฐ'์ ์ํด์ ์ฒ๋ฆฌ๋์ง๋ง, 'inline'์ ์ด์ฉํ ํจ์์ ์ธ๋ผ์ธํ๋ '์ปดํ์ผ๋ฌ'์ ์ํด์ ์ฒ๋ฆฌ๋๋ค.
inline ์ ์ธ์ด ๋์ด์์ด๋ ์ธ๋ผ์ธ์ฒ๋ฆฌ ๋์ง ์์ ์ ์๊ณ , inline ์ ์ธ์ด ์์ด๋ ์ธ๋ผ์ธ์ฒ๋ฆฌ ๋ ์ ์๋ค.
๐ ๋งคํฌ๋ก ํจ์์ ์ฅ์ ์ ์ทจํ๊ณ , ๋จ์ ์ ๋ณด์ํ ๊ฒ
๐ฉ ์ผ๋ฐํจ์์ ๊ฒฝ์ฐ ํจ์๋ฅผ 'ํธ์ถ' ํ์ง๋ง, ์ธ๋ผ์ธ ํจ์๋ ํจ์๋ฅผ '๋ณต์ 'ํ๋ค.
๋ฐ๋ผ์ ํจ์์ ํธ์ถ ๊ณผ์ ์ด ์์ผ๋ฏ๋ก, ์คํ ์๋์์ ์ด์ ์ด ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ธ๋ผ์ธ ํจ์๋ ์์ฃผ ํธ์ถ๋๋ฉด์ ์๋๊ฐ ์ค์ํ ๋ถ๋ถ์์ ์ฃผ๋ก ํ์ฉ๋๋ค.
ํ์ง๋ง ์ธ๋ผ์ธ ํจ์๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ์คํ ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ปค์ง ์ ์์ผ๋ฏ๋ก(ํจ์ ์ฝ๋๋ฅผ ๋ณต์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ) ์ฃผ์ํ์ฌ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
๐ ๋งคํฌ๋ก ํจ์๋ง์ ์ฅ์
๋งคํฌ๋ก ํจ์๋ ์๋ฃํ์ ๋ ๋ฆฝ์ ์ด๋ค.
#define SQUARE(x) ((x)*(x))
std::cout << SQUARE(12); // intํ ํจ์ํธ์ถ
std::cout << SQUARE(3.15); // doubleeํ ํจ์ํธ์ถ
inline ์ ์ธ๋ ํจ์๋ฅผ ์์ ํํ๋ก ํธ์ถํ๋ ค๋ฉด, ๊ฐ ์๋ฃํ ๋ณ๋ก ํจ์๊ฐ ์ค๋ฒ๋ก๋ฉ๋์ด์ผ ํ๋ค.
์ฆ, ๋งคํฌ๋ก ํจ์์ ๋ฌ๋ฆฌ ์๋ฃํ์ ๋ ๋ฆฝ์ ์ด์ง ๋ชปํ๋ค.
๐ ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด inline ํจ์๋ฅผ ์๋ฃํ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ธ ๊ฐ๋ฅํ๋ค.
template <typename T>
inline T SQUARE(T x){
return x*x;
}
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ | C++ ํ์ค ํค๋ (0) | 2024.04.17 |
---|---|
[C++] const | new & delete | friend | static (0) | 2024.04.17 |
[C++] ์ด๋ฆ๊ณต๊ฐ(namespace) | ๋ฒ์์ง์ ์ฐ์ฐ์ (0) | 2024.04.14 |
[C++] ํจ์ ์ค๋ฒ๋ก๋ฉ | ๋งค๊ฐ๋ณ์์ ๋ํดํธ ๊ฐ (0) | 2024.04.14 |
[C++] printf์ scanf๋ฅผ ๋์ ํ๋ ์ ์ถ๋ ฅ ๋ฐฉ์ (0) | 2024.04.14 |