C++ 类型为“的参数”;字符*”;与类型为“的参数不兼容”;LPCWSTR";

C++ 类型为“的参数”;字符*”;与类型为“的参数不兼容”;LPCWSTR";,c++,winapi,char,intellisense,lpcwstr,C++,Winapi,Char,Intellisense,Lpcwstr,我得到这个错误: “char*”类型的参数与“LPCWSTR”类型的参数不兼容 这是我代码的一部分 void score(void) { char s[128]; sprintf_s(s, "Thread War! Hits:%d Misses:%d", hit, miss); SetConsoleTitle(s); ... } 如何修复此问题?您正在使用定义的UNICODE宏进行构建,这意味着所有函数默认为其宽字符等效项。因此,当您调用SetConsoleT

我得到这个错误:

“char*”类型的参数与“LPCWSTR”类型的参数不兼容

这是我代码的一部分

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

如何修复此问题?

您正在使用定义的
UNICODE
宏进行构建,这意味着所有函数默认为其宽字符等效项。因此,当您调用
SetConsoleTitle
时,实际上是一个扩展到
SetConsoleTitleW
的宏

宽字符的类型为
wchar\u t
,与
char
不兼容


您必须显式调用
SetConsoleTitleA
,删除
UNICODE
的定义,或者开始使用
TCHAR
及相关类型和宏。

我猜您的编译器设置是设置为UNICODE的,因此winapi函数将是采用宽字符的UNICODE版本。
LPCWSTR
中的
W
表示函数实际需要的是
wchar\u t*
而不是
char*
。匈牙利式符号很难看,但至少如果一直使用的话很清楚。我知道他想要一个
wchar\u t*
而不是
char*
,但是如果我写
wchar\u t[128]
我会得到
sprintf\u s
@Mockingbird的错误,这就是为什么会有
swprintf