다음은 의미하는 두통 중 하나의 예입니다.L "% s"와 같은 와이드 문자열 두통을 찾는 가장 좋은 방법은 무엇입니까?
텍스트를 화면에 렌더링하는 데 대부분 유니 코드 문자열을 사용하는 다중 플랫폼 프로젝트가 있습니다. VC의 창에 줄을 ++ :
swprintf(swWideDest, LEN, L"%s is a wide string", swSomeWideString);
잘 컴파일하고 다른 넓은 문자열로 넓은 문자열을 인쇄합니다. 그러나이 정말해야합니다 :
swprintf(swWideDest, LEN, L"%ls is a wide string", swSomeWideString);
에 '% ls'이 (가)이 다른 플랫폼에서 작동하지 않습니다와 '% s'을 (를) 교체하지 않고. Windows 환경에서의 테스트는 쉽고 빠르며 디버그하기가 훨씬 쉽습니다. 이런 종류의 버그는 쉽게 눈에 띄지 않을 수 있습니다.
가장 좋은 해결책은 처음부터 올바른 코드를 작성하는 것이지만 압력을 받고 간단한 실수가 발생하는 경우이며,이 특별한 경우에는 오랫동안 쉽게 실수를 알 수 있습니다.
나는 우리가 아직 즐기지 못하는 이런 종류의 버그에 많은 변종이 있다고 생각한다.
누구나 이런 종류의 버그를 찾는 좋은 방법이 있습니까?
: D
"정말로" "% ls"이어야하는 이유는 무엇입니까? '% s'는'swprintf'에 넘겨지는 넓은 문자열에 대해서는 문제가 없습니다. – avakar
''% s '을'% ls '(으)로 바꾸지 않으면 다른 플랫폼에서 작동하지 않습니다.' –