cpp_inline - 8BitsCoding/RobotMentor GitHub Wiki
ν¨μλ₯Ό νΈμΆν λ μλμ κ°μ λ©λͺ¨λ¦¬ μ κ·Όμ΄ λ°μνλ€.
- λ³μλ€μ μ€νμ νΈμ¬
- ν¨μ μ£Όμλ‘ μ ν
- ν¨μλ₯Ό μ€ν
- νΈμΆμ ν¨μλ‘ λ€μ μ ν
- 1λ² λ¨κ³μ λ£μ΄λλ λ³μλ€μ ν
-
μ λ¨κ³κ° λ§κΈ°μ μ±λ₯μ νμ μν₯μ μ€λ€.
-
CPU μΊμμ μ΅μ μ΄ μλ μ μλ€.
-
λͺ¨λ CPU μν€ν μ²μμλ λ λ리λ€.
-
λ°λΌμ λͺ¨λ κ²μ ν¨μλ‘ λ§λλ κ²μ μνν μκ°μΌ μ μλ€.
κ·ΈλΌ ν¨μλ‘ λ§λ€λ©΄ μλλ? 무쑰건 λμκ°?
λ¬Όλ‘ , κ°λ μ±μ μν΄μ ν¨μλ‘ λ§λλ κ²μ΄ μ’μ μΌμ΄μ€κ° μλ€.
Vector result = v1.Add(v2);
// Add
Vector result;
result.mX = v1.mX + v2.mX;
result.mY = v1.mY + v2.mY;
μ΄λ° μν©μ λλΉν΄μ inlineν¨μκ° λμλ€.
μμ λ‘ λ³΄μ
// Animal.h
class Animal {
public:
Animal(int age);
inline int GetAge() const;
};
int Animal::GetAge() const
{
return mAge;
}
μμ κ°μ λ°©λ²μΌλ‘ μ¬μ©νλ©΄λκ³ ,,, μ»΄νμΌλ¬λ ν¨μλ₯Ό νΈμΆνλ κ²μ΄ μλλΌ μ½λλ₯Ό 볡μ¬/λΆμ¬λ£κΈ° ν΄μ€λ€. λ§μΉ MACRO(#define)μ κ°μ μν λ¨, λ§€ν¬λ‘λ μ½μ€νμ ν¨μ μ΄λ¦μ΄ 보μ΄μ§ μκ³ , λΈλ μ΄ν¬ν¬μΈνΈλ μμ‘νλ€.
inlineμ μ£Όμμ
- inlineμ μ»΄νμΌλ¬μκ² μ½λλ₯Ό 볡μ¬/λΆμ¬λ£κΈ° ν΄λ¬λΌ μ‘°μΈμ ν λΏ κ°μνλ κ²μ΄ μλκΈ°μ μ»΄νμΌλ¬κ° inlineμ μ μ©νμ§ μμ μ μλ€.
μΆκ°λ‘
__forceinline
μ νλ©΄ κ°μ λ‘ ν μ μμ κ² κ°μ§λ§ μλ¨...
- μΈλΌμΈ ν¨μ ꡬνμ΄ ν€λ νμΌμ μμΉν΄μΌνλ€.
- κ°λ¨ν ν¨μμ μ ν©(getter, seeter)
- μ€ννμΌμ ν¬κΈ°κ° μ¦κ°νκΈ°κ° μ¬μ. λ¨μ©νμ§ λ§ κ², μ€ννμΌμ΄ μμ μλ‘ CPU μΊμνκ³ μ λμ
Example
// getter, setter
inline int GetX() const;
inline void SetX(int x);
inline int GetY() const;
inline void SetY(int y);
// κ°λ¨ν μνν¨μ
inline void Scale(const Vector& v);
// μ°μ°μ
inline operator==(const Vector& rhs);