사례1)

warning C4819: The file contains a character that cannot be represented in the current code page (949). Save the file in Unicode format to prevent data loss


닷넷에서 한글로 주석을 달면 나올 수 있는 워닝이라고 한다...

그래서인지 구글에서 검색해보면 이 워닝으로 귀찮아하는 외국인을 찾을 수 없다ㅎㅎ


#pragma warning(disable:4819) 로 무시해주거나~

주석을 영어로 달면 해결될듯?? <- 이방법은 안해봤으나 앞으로는 이렇게 해야겠다고 맘먹는중??ㅎㅎ


사례2)


warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오


d3d9types.h 에 보면..


1801번째 줄에서 볼수 있는 구조체 이다.

( Ctrl + G 를 누르면 한방에 갈 수 있다는 것은 알고 있죠?! 마우스 휠 비비지 말자.. 남들 보면 오해한다.. -0-? 뭘?! )


typedef struct _D3DDEVINFO_VCACHE {
    DWORD   Pattern;                    /* bit pattern, return value must be FOUR_CC(멌? 멇? 멌? 멖? */
    DWORD   OptMethod;                  /* optimization method 0 means longest strips, 1 means vertex cache based */
    DWORD   CacheSize;                  /* cache size to optimize for  (only required if type is 1) */
    DWORD   MagicNumber;                /* used to determine when to restart strips (only required if type is 1)*/
} D3DDEVINFO_VCACHE, *LPD3DDEVINFO_VCACHE;


주석문중에 깨진 글자가 보일 것이다.


과감히 지워주자... 이제 더이상의 찜찜한 기분은 느낄 필요가 없다..



VS.NET 2003 혹은 2005로 컴파일을 하다보면


warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.


이런 형태의 warning 메세지를 확인할 수 있습니다. warning 이기는 하지만 그래서 상당히 눈에 거슬리는 부분이 아닐 수 없습니다.

그래서 이번에 그 원인과 해결방법을 알아 보고자 합니다.



[원인]

ANSI로 인코딩된 소스코드를 VS.NET 2005 (한글판)에서 빌드하면서 발생하는 문제로 일본판의 경우에도 비슷한 문제가 발생하였고 영문판 VS.NET 2005에서는 발생하지 않는 것으로 알려졌습니다.

MS에서도 이를 버그로 인정하고 다음 버전에서 수정한다고 합니다.



[해결방안1]

#pragma warning(disable: 4819)

이 문장을 상단에 위치시켜서 해당 warning이 표시되지 않게 한다.



[해결방안2]

VS.NET 2005의 경우

'프로젝트->속성->구성속성->C/C++->고급->특정 경고 사용 안함'

항목에 4819와 같이 무시하고 싶은 경고 메세지 번호를 넣는다.



[해결방안3]

세번째로는 warning이 발생하는 파일을 새롭게 유니코드 형태로 저장하는 방법입니다.


VS.NET 2005의 경우

'파일->저장 고급 옵션'

"유니코드 - 코드페이지 1200" 형태로 저장을 선택하시면 됩니다.


메모장 등 기타 편집기를 이용하셔도 됩니다.



현재 전반적으로 사용하는 방법이 위에 3가지 정도 인듯 합니다.

저의 경우 이 warning이 DXSDK에서 발생해서 당황했었던... ^^

처음엔 #pragma 형태로 했었는데 해결방안2 형태로 하니까 편하더군요.. ^^

블로그 이미지

요다할아범

,