2012-01-09 3 views
0

에 '더블'에서 변환 할 수 없습니다이 내가 얻을 정확한 오류입니다 :'기능은': '의 wchar_t의 *'나는 비주얼 스튜디오 2010에서 컴파일하려고

Error 65 error C2440: 'function' : 
     cannot convert from 'double' to 'const wchar_t *'  

기분을 상하게하는 선 존재 :

swprintf(subbuf[num], L"%f\0", va_arg(args, double)); 

이 코드는 코드를 변경하지 않는 것이 좋습니다. 이 문제를 해결할 수있는 컴파일러 옵션이 누락 되었습니까?

편집

: 여기

subbuf의 선언입니다 : 크기 인수에 관한, 또한

#define GDB_CHAR wchar_t 
GDB_CHAR subbuf[MAX_SUBS][STATUS_MSG_LEN+1] ; 

, 나는 또한 문서의 페이지를 확인하지만, 컴파일러 는 오류가 발생하지 않습니다 on

swprintf(subbuf[num], L"%c\0", va_arg(args, int)); 

따라서 int ~ wchar_t *이고 함수의 인수는 ok입니다.

아직 충분히 유익하지 않은 경우 의견이 있으시고 다른 사람들에게 알려 주시기 바랍니다. 감사합니다.

+1

'subbuf'유형은 무엇입니까? (C++ 태그가 C 코드 인 경우 C++ 태그를 제거해야하며 그 반대의 경우도 마찬가지입니다.) –

+0

선언하지 않은 식별자를 사용하면 컴파일 할 수 없습니다. 유용한 코드 스 니펫을 게시 할 때까지는 유용한 대답을 기대할 수 없습니다. –

+0

@Deepak : Potatoswatter의 대답이 옳습니다. 컴파일러가'int '를 포인터 (암시 적으로 높은 경고 레벨을 선택해야 함)로 암시 적으로 변환 시키지만, 이중으로 포인터를 현명하게 변환 할 수는 없다는 것은 놀라운 일이 아닙니다. 올바른 주장을 사용하려고하지 않는 이유는 무엇입니까? –

답변

2

documentation을 보면이 기능에 생략 된 출력 문자열의 크기를 지정하는 인수가 필요하다는 것을 알 수 있습니다.

+0

도움 주셔서 감사합니다. – Deepak