2015-11-13 21 views
-3

的參數不符我得到這個錯誤:的說法是,類型爲「LPCWSTR」

argument of type "char *" is incompatible with parameter of type "LPCWSTR"

這裏是我的代碼

void score(void) 
{ 
    char s[128]; 
    sprintf_s(s, "Thread War! Hits:%d Misses:%d", hit, miss); 
    SetConsoleTitle(s); 
    ... 
} 

部分如何解決這一問題?

+0

我想你的編譯器設置設置爲Unicode,所以winapi函數將是unicode版本採取寬字符。 [SetConsoleTitle](https://msdn.microsoft.com/en-us/library/windows/desktop/ms686050(v = vs.85).aspx) – crashmstr

+0

「LPCWSTR」中的「W」表示函數實際上需要一個'wchar_t *'而不是'char *'。匈牙利式標記是醜陋的,但至少如果一貫使用的話很明顯。 –

+0

我明白他想要一個'爲wchar_t *''而不是字符*',但如果我寫的'wchar_t的S [128]'我會得到錯誤'sprintf_s' – Mockingbird

回答

0

你與定義的UNICODE宏,這意味着構建的所有功能爲默認的寬字符等效。所以當你打電話給SetConsoleTitle這實際上是一個擴展到SetConsoleTitleW的宏。

寬字符的類型爲wchar_t,與char不兼容。

您必須明確呼叫SetConsoleTitleA,刪除UNICODE的定義,或者開始使用TCHAR及相關類型和宏。

相關問題