[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 2. MBCSμ WBCSμ λμ μ§μ
μ΄ ν¬μ€νΈλ, μ€μ±μ° μ μλμ 'λλ₯Ό μκ·Ήνλ μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°'μ λ°νμΌλ‘ μ μκ°μ μ¬κ΅¬μ±νμ¬ μ 리ν ν¬μ€νΈμ λλ€.
μ΄μ ν¬μ€νΈ
μλ‘
μΈμμ λͺ¨λ μμ€ν μ΄ μ λμ½λλ₯Ό μ§μνλ€κ³ νλ©΄ λ¬Έμ κ° μλ€.
νμ§λ§ μ¬μ ν! μ λμ½λμ μ₯μ , μ©μ΄μ±λ€μ΄ μμμλ λΆκ΅¬νκ³ μ MBCSλ₯Ό λͺ»λ²λ¦¬λλ?
κΈ°μ‘΄μ MBCS κΈ°μ€μΌλ‘ κ°λ°λ νλ‘κ·Έλ¨κ³Όμ νΈνμ±, μμ§ μ λμ½λλ₯Ό μ§μνμ§ μλ μ¬μ©μμ μμ€ν λ±.. μ¬λ¬ κ°μ§ μ΄μ κ° μλ€.
μλ² νλ‘κ·Έλ¨κ³Ό κ°μ κ²μ κ°λ°νλ€κ³ νλ©΄ ν¬κ² μκ΄μκ² μ§λ§,
μ΅μ’ μλν¬μΈνΈκ° ν΄λΌμ΄μΈνΈμΈ κ²½μ°λ MBCSμ WBCSλ₯Ό λμ μ§μν μ μλλ‘ ν΄μΌ νκ³ κ°λ°μλ€λ κ°λ°ν λ μ΄λ¬ν μ΅κ΄μ λ€μ¬μΌ νλ€.
λͺ©μ°¨
- windows.h μμλ?
- MBCSμ WBCS λμ μ§μ 맀ν¬λ‘
windows.h μμλ?
Windows μ μ μλ£ν
typedef char CHAR;
typedef wchar_t WCHAR;
// WinString.cpp μ°Έμ‘°
#define CONST const
typedef CHAR * LPSTR;
typedef CONST CHAR * LPSTR;
typedef WCHAR * LPWSTR;
typedef CONST WCHAR * LPCWSTR;
무쑰건 typedefμ μ μΈ ν λλ‘ κΌ μ μλ₯Ό νμ§ μμλ λλ€.
κ·Έ λ§μ μ¦μ¨ μ€λ¬΄μμ ν νμ¬μ μ¬λ¬ νμ΄ μκ³ κ° νλ³λ‘ νλ‘μ νΈλ₯Ό λ΄λΉνλ€κ³ κ°μ νλ©΄,
νλ‘μ νΈ λ³λ‘ λ€μ΄λ°μ λ¬λ¦¬νκΈ°λ νκ³ νλ³λ‘ λ€μ΄λ°μ λ¬λ¦¬νκΈ°λ νκ³ νμ¬λ³λ‘ λ€μ΄λ°μ λ¬λ¦¬νκΈ°λ νλ€.
μ¦ μμ Windows μ μ μλ£νμ΄ κΌ μ΅μ μ μλλΌλ λ§μ΄λ€.
μ¦ μμ κ°μ μλ£ν μ체λ₯Ό κΈ°μ΅νλ κ²λ³΄λ€ μ΄λ€ μμΌλ‘ λ€μ΄λ°μ νλμ§ μ΄ν΄νλ €λ κ² μ’λ€.
MBCSμ WBCS λμ μ§μ 맀ν¬λ‘
κ·Έλ λ€λ©΄! μ΄λ»κ² MBCSμ WBCSλ₯Ό λμμ μ§μν μ μλ κ±ΈκΉ?
#ifdef UNICODE
typedef WCHAR TCHAR;
typedef LPWSTR LPTSTR;
typedef LPCWSTR LPCTSTR;
#else
typedef CHAR TCHAR;
typedef LPSTR LPTSTR;
typedef LPCSTR LPCTSTR;
#endif
λ΅μ UNICODEλΌλ 맀ν¬λ‘ μμ μλ€. windows.h νμΌμ ν¬ν¨λμ΄μλ κ²λ€μΈλ°,
UNICODEλΌλ λ¨μ΄λ₯Ό μ μΈνλ©΄ μ μ²λ¦¬κΈ°μ μν΄ μ‘°κ±΄λΆ μ»΄νμΌμ΄ μΌμ΄λ μλμ κ°μ΄ λ³νλλ€.
#ifdef _UNICODE
#define __T(x) L ## x
#else
#define __T(x) x
#endif
#define _T(x) __T(x)
#define _TEXT(x) __T(x)
μλ λ§μ°¬κ°μ§λ€, μ΄μ ν¬μ€νΈμμ wchar_tμ Lμ λν΄ μ€λͺ νμλλ° κ·Έκ²μ λν μ μΈμ΄λ€.
## μ°μ°μ λν΄ μ€λͺ νμλ©΄ λ¬ΈμλΌλ¦¬ λΆμ΄λΌλ μλ―Έλ€.
μλ₯Ό λ€μ΄, __T("ABC")λΌ μ μΈνλ©΄ L"ABC"μ κ°μ΄ μΉνλλ€.
[μμ 1]
#define UNICODE
#define _UNICODE
int wmain(void)
{
TCHAR str[] = _T("1234567");
int size = sizeof(str);
printf("string length: %d \n", size);
return 0;
}
string length: 16
μμ κ²°κ³Όλ μ λμ½λ 맀ν¬λ‘λ₯Ό μ μν΄μ€λ€λ©΄ λ¬Έμλ₯Ό 2byteλ‘ ν΄μνμ¬
1234567 -> (λ¬Έμ 7κ° + NULLλ¬Έμ 1κ°) * 2 = 16μ΄λΌλ κ²°κ³Όκ° μΆλ ₯λλ€.
#ifdef _UNICODE
#define _tmain wmain
#define _tsclen wcslen
#define _tprintf wprintf
#define _tscanf wscanf
#else
#define _tmain main
#define _tmain strlen
#define _tmain printf
#define _tmain scanf
#endif
μμ κ°μ 맀ν¬λ‘λ windows.hμ μ μλμ΄μλλ°, μ΄κ²μ 무μμ μλ―Ένλλ νλ©΄ μμΌλ‘ μ°λ¦¬λ mainν¨μμ κ°μ κ²λ€μ μ μν λ mainμΌλ‘ wmainμΌλ‘ μΈ κ²μ΄λ κ³ λ―Όν νμ μμ΄ _tmainμ μ¬μ©νλ©΄ MBCSμ WBCS λͺ¨λ μ§μμ΄ λκΈ° λλ¬Έμ μμ κ°μ 맀ν¬λ‘λ₯Ό νμ©νλ μ΅κ΄μ λ€μ¬ νλ‘κ·Έλλ°νλ κ²μ΄ μ’λ€.
'Development > System' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λκΈ
μ΄ κΈ κ³΅μ νκΈ°
-
ꡬλ
νκΈ°
ꡬλ νκΈ°
-
μΉ΄μΉ΄μ€ν‘
μΉ΄μΉ΄μ€ν‘
-
λΌμΈ
λΌμΈ
-
νΈμν°
νΈμν°
-
Facebook
Facebook
-
μΉ΄μΉ΄μ€μ€ν 리
μΉ΄μΉ΄μ€μ€ν 리
-
λ°΄λ
λ°΄λ
-
λ€μ΄λ² λΈλ‘κ·Έ
λ€μ΄λ² λΈλ‘κ·Έ
-
Pocket
Pocket
-
Evernote
Evernote
λ€λ₯Έ κΈ
-
[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 3. νλ‘κ·Έλ¨ κ΅¬ν κ΄μ μμμ 32λΉνΈμ 64λΉνΈ & μ€λ₯μ νμΈ
[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 3. νλ‘κ·Έλ¨ κ΅¬ν κ΄μ μμμ 32λΉνΈμ 64λΉνΈ & μ€λ₯μ νμΈ
2019.06.30 -
[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 3. WIN32 vs WIN64
[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 3. WIN32 vs WIN64
2019.06.27 -
[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 2. Windowsμμμ μ λμ½λ(UNICODE)
[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 2. Windowsμμμ μ λμ½λ(UNICODE)
2019.06.27 -
[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 1. νλ‘κ·Έλ¨μ μ€ν κ³Όμ /νλμ¨μ΄ ꡬμ±μ μ¬μ κ·Ό
[μλμ°μ¦ μμ€ν νλ‘κ·Έλλ°] 1. νλ‘κ·Έλ¨μ μ€ν κ³Όμ /νλμ¨μ΄ ꡬμ±μ μ¬μ κ·Ό
2019.06.12