์ฌ์ค inline์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ต๊ฐ๋ฅํ๊ฑธ๋ก ์๊ณ ์์ต๋๋คย
๊ทธ๋ฐ๋ฐ ์ด๋ณด์
์ฅ์์ ๋ช
์์ ์ผ๋ก ์ฐ๋๊ฑธ ์ต๊ดํํ๋ผ๊ณ ํด์ ์ฐ๋ ค๊ณ ํฉ๋๋ค
์ ๊ฐ ์๋ inline์ฐ๋์ด์ ย
1.ํค๋ํ์ผ์ ์ ์ธํ ๋ ํจ์ ํธ์ถ์ ํ์ง์๊ณ ๋ฐ๋ก ๊ตฌํ? ํ ์์๋ค. ๊ทธ๋์ ๋น ๋ฅด๋ค.
2. inline์ ์จ์ผ์ง ์ค๋ณต์ ์๋ฅผ ๋ฐฉ์งํ ์์๋ค๋๋ฐ ์ด๊ฑด ๋ฌด์จ ์ค๋ณต์ ๋ฐฉ์งํ๋ค๋์ง ์ดํด๊ฐ์๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ย
ย ํ ํ๋ฆฟ ํด๋์ค์์ static๋ณ์๋ฅผ ์ ์ธํ๊ณ ํค๋ํ์ผ์ ๊ตฌํํด๋ ์๊ด์๋ค๊ธธ๋ย
static std::mutex NameLock; << ์ด๊ฒ ํด๋์ค์ ๋ณ์
}ํด๋์ค๊ฐ ๋๋ ๋ถ๋ถ๋ค์
template<typename ResourcesType>
std::mutex GameEngineResource<ResourcesType>::NameLock; <<ํค๋ํ์ผ์ ๋ณ์๋ฅผ ๊ตฌํ?์ด๊ธฐํ? ํ๊ฒย
์ด ๋ถ๋ถ์์ ๋ณ์๋ฅผ ์ ์ธํ ๋ย inllineย static std::mutex NameLock; ์ด๋ ๊ฒ ํ๋ผ๋๋ฐ ๋ง๋์?ย
inline์ ์ด๋ค๋๊ฑฐ ์์ฒด๊ฐ ์ ์ธ๊ณผ๊ตฌํ์ด ๋์์ ๋์ด์๋๊ณณ์์๋ง ์ธ์์๋ค๊ณ ์๊ณ ์๋๋ฐ ์ ๊ฐ ๋ญ ์๋ชป์๊ณ ์๋์ง ๊ถ๊ธํฉ๋๋ค
์ค๋ณต์ ์๋ ํค๋ํ์ผ ๋ด์ ํจ์๊ฐ ์ ์ ๋์ด์๋ค๋ฉด ํด๋น ํค๋ํ์ผ์ includeํ ๋ชจ๋ cppํ์ผ์์ ์ ์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ค๋ณต์ ์๊ฐ ๋๋ค๊ณ ์ด์ผ๊ธฐํ๋๊ฑด๋ฐ, inline ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด ํด๋น ํจ์ ๋ด์ฉ์ ๊ทธ๋๋ก ์ฝ๋์ ๋ฐ์์ฃผ๋๊ฑฐ๋ ์ค๋ณต์ ์๋ฅผ ๋ง๋๋ค๋ ๋ด์ฉ์.
์์ฆ ์ปดํ์ผ๋ฌ๋ ํค๋์ ํจ์๋ฅผ ์ ์ํ๋ฉด ์๋์ผ๋ก ํด๋นํจ์๋ inline์ผ๋ก ์ฒ๋ฆฌํ ๊ฑฐ์
๊ทธ๋ฆฌ๊ณ inline ๋ฉค๋ฒ๋ณ์์ ์๋ฏธ๋ ๋ง์ปค์๊ฒ ํด๋น ๋ณ์๊ฐ ์ค๋ณต์ ์ ๋์ง์๊ฒ ์๊ธฐ๋ฅผ ํ๋๊ฑฐ๋, ํค๋์ ์ ์๋ฅผ ํ ๊ฑฐ๋ฉด inlineํค์๋๋ ์จ์ผ์ง. ์ฌ๋ฌ cpp์์ ๊ทธ ํค๋๋ฅผ include ํ ์์์ผ๋
๊ทผ๋ฐ ๋ชจ๋ ํจ์์ inline์ ๋ฐ๊ณ ์๋๊ฑฐ์?
๋ต ๊ฐ์ผ๋ค ใ ํค๋ํ์ผ์ด๊ณ ์ ์ธ๊ณผ ์ ์๋ฅผ ํ๋ฒ์ ํ๋ํจ์ ๊ทธ๋ฆฌ๊ณ ๋จ์ํํจ์์ inline์ ์ฐ๊ณ ์์ด์ฌ