C and C plus plus - Sizuha/devdog GitHub Wiki
C/C++
static ν¨μ
μΌλ° ν¨μμ staticμ΄ λΆλ κ²½μ°, μ΄λ ν΄λΉ ν¨μκ° ν΄λΉ νμΌ μμμλ§ μ¬μ©λ μ μμμ λ»νλ€.
/* a.c */
// μ΄ ν¨μλ a.c λ΄μμλ§ μ¬μ©λλ€.
static void testFunc() {
// ...
}
/* b.c */
// μ΄ ν¨μλ b.c λ΄μμλ§ μ¬μ©λλ€.
static void testFunc() {
// ...
}
// μ΄λ° μμΌλ‘ κ°μ ν¨μλͺ
μ μ μΈνκ³ μμ΄λ νμΌκ°μ μΆ©λμ΄ μΌμ΄λμ§ μλλ€.
ν¨μ ν¬μΈν°
ν¨μλ₯Ό κ°λ¦¬ν€λ ν¬μΈν° ν μ μΈ
// Fκ° ν¨μν ν¬μΈν° λ³μκ° λλ€.
return_type (*F)(arg_type1, arg_type2, ...);
// Fλ₯Ό ν¨μν νμ
μΌλ‘ μΈ μ μλ€.
typedef return_type (*F)(arg_type1, arg_type2, ...);
λ§΄λ²ν¨μ ν¬μΈν° (C++)
return_type (ClassName::*F)(arg_type1, arg_type2, ...);
mutable (C++)
λ³Έλ constλ‘ μμμ§μ λ κ°μ²΄λ λ°μ΄λ리 λ¨μμ μμμ±μ κ°μ§λ€. λ§ κ·Έλλ‘ μμκ°μ²΄μΌ λλ λ¨ 1λΉνΈλ λ³κ²½μ΄ λΆκ°λ₯νλ€.
κ·Έλ°λ° μ΄μ©λ©΄ λ°μ΄λ리 μμ€μ΄ μλλΌ κ°λ μ μμ€μμλ§ μμμ±μ΄ νμν μλ μλ€. μ¦, κ°μ²΄ λ°μ΄λ리 μ 체λ₯Ό λ€ μμν ν νμλ μκ³ , μ¬μ©μ μͺ½μμ 보기μ μμμ±μ΄ μ μ§λκ³ μλ€κ³ 보μ¬μ§λ©΄ κ·Έλ§μΌ κ²½μ°. λ¬λ¦¬ λ§νμλ©΄ μμνλ κ°μ²΄μμλ νμμ λ°λΌμλ λ΄μ©μ΄ λ³κ²½λ μ μλλ‘ ν μ μλ€.
λ€μκ³Ό κ°μ΄ μμμ±μ ν΄μ ν λ§΄λ²(νλ)λ₯Ό mutableλ‘ μ μΈνλ€.
class X {
private:
bool m_flag;
mutable int m_accessCount;
public:
bool GetFlag() const {
// μμνλ μΈμ€ν΄μ€μμλ mutableλ‘ μ μΈλ λ§΄λ²λ λ³κ²½ κ°λ₯.
m_accessCount++;
return m_flag;
}
};
λ¬Έμ λ° ν΄κ²°
char -> wchar_t λ³ν
char* λ¬Έμμ΄μ unicode λ¬Έμμ΄(wchar_t*) νμ μΌλ‘ λ³νν λλ charνμ΄ signed νμ μ΄λΌλ κ²μ μ£Όμν΄μΌ ν νμκ° μμ΅λλ€. μ΄κ²κ³Ό κ΄λ ¨ν΄μ μ κ° κ²½ννλ μ½μ§μ κ°λ¨ν μλ₯Ό νλ λ€μ΄λ³΄κ² μ΅λλ€.
void charToWChar(char src, wchar_t& out_dest) {
out_dest =(wchar_t)src;// X : μ΄λ κ² νλ©΄ μλ¨!!
}
μΌν보면 λ³ λ¬Έμ μμ΄ μ λμν κ² κ°μ ν¨μμΈλ°, μ¬μ€μ μ€λν λ²κ·Έκ° μμνκ³ μμ΅λλ€. μΌλ¨ charλ 1 Byteμ signed(λΆνΈμλ) μ μλ‘ μ·¨κΈλλ€λ κ±°κ³ , wchar_tλ unsigned short(λΆνΈμλ 2 Byte μ μ)λ‘ μκ°ν μ μλλ°, μ¬κΈ°μ src μΈμκ° μμ(-) κ°μ΄ λ€μ΄μ¬ κ²½μ°λ₯Ό μκ°ν΄ λ΄ λλ€.
μλ₯Όλ€μ΄ src = -1 μ΄λΌκ³ ν λ, -1μ λ°μ΄νΈλ‘ 0xFFκ° λ©λλ€. μλ μλλ 0xFF(μ¦ 255)κ° κ·Έλλ‘ 2 Byteλ‘ νμ₯λμ 0x00FFκ° λμ΄μ out_destμ μ λ¬μ΄ λμ΄μΌ νμ£ .
νμ§λ§ μ€μ λμμ μ ν λ€λ₯΄κ² μΌμ΄λ©λλ€. μ°μ -1μ 2 Byteλ‘ νμ₯ μν΅λλ€. -1μ λν 2 Byte ννμ 0xFFFFκ° λ©λλ€. κ·Έλ¦¬κ³ μ΄κ²μ unsignedλ‘ μΈμνκ³ out_destμ μ λ¬ν©λλ€. κ·Έλμ out_destμ λν μΆλ ₯κ°μ 65535(0xFFFF)κ° λ©λλ€.
λ°λΌμ μλ μλλλ‘ λμμν€ μν΄μλ unsigned char νμΌλ‘(2 Byte μ μλ‘ νμ₯λμ§ μκ²) νμ μΊμ€ν μ ν΄μ€μΌ ν©λλ€.
void charToWChar(char src, wchar_t& out_dest) {
out_dest =(unsigned char)src;
}