사례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 형태로 하니까 편하더군요.. ^^