tchar.h의 제네릭 텍스트 매핑
Microsoft 런타임 라이브러리는 국제적인 사용을 위해 코드 전송을 간소화하기 위해 많은 데이터 형식, 루틴 및 기타 개체에 대한 Microsoft 관련 일반 텍스트 매핑을 제공합니다. tchar.h에 정의된 이러한 매핑을 사용하여 문을 사용하여 #define
정의하는 매니페스트 상수에 따라 싱글바이트, 멀티바이트 또는 유니코드 문자 집합에 대해 컴파일할 수 있는 제네릭 코드를 작성할 수 있습니다. 제네릭 텍스트 매핑은 ANSI와 호환되지 않는 Microsoft 확장입니다.
tchar.h를 사용하여 동일한 원본에서 싱글바이트, MBCS(멀티바이트 문자 집합) 및 유니코드 애플리케이션을 빌드할 수 있습니다. tchar.h는 올바른 전처리기 정의를 사용하여 적절하게 함수에 매핑 str
_mbs
wcs
하는 매크로(접두_tcs
사 포함)를 정의합니다. MBCS를 빌드하려면 기호 _MBCS
를 정의합니다. 유니코드를 빌드하려면 기호 _UNICODE
를 정의합니다. 단일 바이트 애플리케이션을 빌드하려면 둘 다 정의하지 않습니다(기본값). 기본적으로 _UNICODE
MFC 애플리케이션에 대해 정의됩니다.
_TCHAR
데이터 형식은 tchar.h에서 조건부로 정의됩니다. 빌드 _TCHAR
에 대해 기호가 정의되면 로 wchar_t
정의되고, 그렇지 않으면 싱글 바이트 및 MBCS 빌드의 경우 해당 기호 _UNICODE
가 로 char
정의됩니다. (wchar_t
기본 유니코드 와이드 문자 데이터 형식은 8비트 데이터 형식의 16비signed char
트 데이터 형식입니다.) 국제 애플리케이션의 경우 바이트가 아닌 단위로 _TCHAR
작동하는 함수 제품군을 사용합니다_tcs
. 예를 들어 _tcsncpy
바이트가 아닌 n
복사본입니다n
_TCHARs
.
일부 SBCS(Single Byte Character Set) 문자열 처리 함수는 (부호 있는) char*
매개 변수를 사용하므로 형식 불일치 컴파일러 경고가 정의되면 발생 _MBCS
합니다. 다음 세 가지 방법으로 이 경고를 방지할 수 있습니다.
tchar.h에서 형식이 안전한 인라인 함수 unks를 사용합니다. 이 옵션은 기본 동작입니다.
명령줄에서 정의하여 tchar.h에서 직접 매크로를
_MB_MAP_DIRECT
사용합니다. 이렇게 하는 경우 형식을 수동으로 일치시켜야 합니다. 가장 빠른 방법이지만 형식이 안전하지는 않습니다.tchar.h에서 형식 안전 정적으로 연결된 라이브러리 함수 unks를 사용합니다. 이렇게 하려면 명령줄에서
_NO_INLINING
상수를 정의합니다. 이는 속도가 가장 느린 방법이지만 형식은 가장 안전합니다.
일반 텍스트 매핑용 전처리기 지시문
#define | 컴파일 버전 | 예시 |
---|---|---|
_UNICODE |
유니코드(와이드 문자) | _tcsrev 는 _wcsrev 에 매핑됩니다. |
_MBCS |
멀티바이트 문자 | _tcsrev 는 _mbsrev 에 매핑됩니다. |
없음(기본값은 정의되지도 _UNICODE 않음 _MBCS ) |
SBCS(ASCII) | _tcsrev 는 strrev 에 매핑됩니다. |
예를 들어 tchar.h에 정의된 제네릭 텍스트 함수_tcsrev
는 프로그램에서 정의한 경우 또는 _wcsrev
정의 _MBCS
_UNICODE
한 경우에 매핑 _mbsrev
됩니다. 그렇지 않으면 _tcsrev
는 strrev
로 매핑됩니다. 다른 데이터 형식 매핑은 프로그래밍 편의를 위해 tchar.h에서 제공되지만 _TCHAR
가장 유용합니다.
일반 텍스트 데이터 형식 매핑
제네릭 텍스트 데이터 형식 이름 |
_UNICODE 및 _MBCS 정의되지 않음 |
_MBCS 정의됨 |
_UNICODE 정의됨 |
---|---|---|---|
_TCHAR |
char |
char |
wchar_t |
_TINT |
int |
unsigned int |
wint_t |
_TSCHAR |
signed char |
signed char |
wchar_t |
_TUCHAR |
unsigned char |
unsigned char |
wchar_t |
_TXCHAR |
char |
unsigned char |
wchar_t |
_T 또는 _TEXT |
효과 없음(전처리기에 의해 제거됨) | 효과 없음(전처리기에 의해 제거됨) | L (다음 문자 또는 문자열을 유니코드로 변환) |
루틴, 변수 및 기타 개체의 제네릭 텍스트 매핑 목록은 런타임 라이브러리 참조의 제네릭 텍스트 매핑을 참조하세요.
참고 항목
포함된 null 바이트를 포함할 가능성이 있는 유니코드 문자열과 함께 함수 패밀리를 사용하지 str
마세요. 마찬가지로 MBCS(또는 SBCS) 문자열과 함께 함수 패밀리를 사용하지 wcs
마세요.
다음 코드 조각은 MBCS, 유니코드 및 SBCS 모델에 매핑하는 데 _TCHAR
및 _tcsrev
를 사용하는 방법을 보여 줍니다.
_TCHAR *RetVal, *szString;
RetVal = _tcsrev(szString);
정의된 경우 _MBCS
전처리기는 이 조각을 다음 코드에 매핑합니다.
char *RetVal, *szString;
RetVal = _mbsrev(szString);
정의된 경우 _UNICODE
전처리기는 이 조각을 다음 코드에 매핑합니다.
wchar_t *RetVal, *szString;
RetVal = _wcsrev(szString);
둘 다 _MBCS
정의되지 _UNICODE
않은 경우 전처리기는 다음과 같이 조각을 싱글바이트 ASCII 코드에 매핑합니다.
char *RetVal, *szString;
RetVal = strrev(szString);
따라서 세 종류의 문자 집합 중 하나와 관련된 루틴을 사용하여 실행되도록 단일 소스 코드 파일을 작성, 기본 및 컴파일할 수 있습니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기