USES_CONVERSION
반응형
다들 아는 매크로지만.
USES_CONVERSION 이란 매크로를 사용하면 급할 경우 유니코드와 안시 사이의 변환을 간단하게 할 수 있습니다.
사용법은 간단하지요.
// use it to call OLE here USES_CONVERSION; pI->SomeFunctionThatNeedsUnicode(T2OLE(lpszA));
정의된 매크로는 다음과 같습니다.
매크로 | 인자 | 결과 |
A2CW | (LPCSTR) | (LPCWSTR) |
A2W | (LPCSTR) | (LPWSTR) |
W2CA | (LPCWSTR) | (LPCSTR) |
W2A | (LPCWSTR) | (LPSTR) |
T2COLE | (LPCTSTR) | (LPCOLESTR) |
T2OLE | (LPCTSTR) | (LPOLESTR) |
OLE2CT | (LPCOLESTR) | (LPCTSTR) |
OLE2T | (LPCOLESTR) | (LPCSTR) |
오히려 중요한 것은 주의점이지요.
단 한가지만 인식하고 있으면 됩니다.
이 놈의 매크로는 메모리를 스택에 잡습니다!!!
위의 CRichEdit::GetSel에서와 마찬가지로 alloca 함수를 사용해서 스택에 잠깐 메모리를 할당하는 것이죠.
그로 인해 나타나는 실질적인 주의사항은
- 과도한 순환문 속에서는 사용하면 안됩니다. - 매크로가 불릴 때마다 스택의 메모리를 잡아먹습니다. 그 메모리는 함수가 끝날 때까지 해제되지 않습니다.
- 매크로의 결과를 리턴하면 안됩니다. - 결과로 나오는 포인터는 함수가 끝날 때까지만 유효합니다.
스택에 메모리를 잡기 때문에 속도면에서는 빠르겠지요. 참고로 코드 페이지는 기본적으로는 GetACP 함수의 결과를 사용합니다. #define을 잘 해주면 특정 코드페이지에 대해서 동작하게 할 수도 있을 것 같더군요.
'유용한 것들_func' 카테고리의 다른 글
Cubemap D3DFMT_DXT1으로 저장하기. (0) | 2009.08.20 |
---|---|
FreeType 을 이용한 TrueType Font 파일 읽기 (0) | 2009.08.18 |
vld 사용법 (0) | 2009.07.26 |
[window] CFileDialog - 파일포맷 지정 (0) | 2009.07.16 |
[DX]StretchRect (LPDIRECT3DSURFACE 복사) (0) | 2009.07.16 |
TAGS.