error:"LPSTR"类型的实参数与"LPCWSTR"类型的形参不兼容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error:"LPSTR"类型的实参数与"LPCWSTR"类型的形参不兼容相关的知识,希望对你有一定的参考价值。

window7 平台下的旗舰版VS2012.出现如图错误.

vs默认字符串使用 unicode编码,因此所有的API函数都是调用的Unicode版本,比如MessageBox()它有MessageBoxA()和MessageBoxW()两个版本,在VS中默认调用的后者,所以在参数传递的时候,它需要的是UNIICODE的字串,你可以不管这些,直接使用TCHAR 而不是使用CHAR定义lpString[120], 使用TCHAR时请添加<tchar.h>的头文件。 没事 来0x30百度贴吧耍耍,共同交流学习。。也可以参加百度知道 0x30团队,帮助别人的同时也可以学到东西的。 参考技术A 字符串编码的问题。
MessgeBox的第二个参数是LPCWSTR类型,也就是const wchar_t * ,szString的定义改为
LPCWSTR szString = TEXT("Windows data type, string.");
参考技术B 确实是编码问题,你可能是从VC6以下版本转到VS2003以上版本编程的,那么就存在字符是16位还是32位表示的问题.你可以去翻阅下<windows下的C/C++高级编程>开篇就是讲关于变量类型的问题.另有unicode编码一书.

我的意思与上一位相同.编码问题可以使用判断程序是否已经定义#define __Unicode宏来解决本回答被提问者和网友采纳

关于IntelliSense: "const char *" 类型的实参与 "char" 类型的形参不兼容问题

void ErrorPrint(char X)--------------这是定义的。



printf("Error%d: %s\n", WSAGetLastError(), X);

。。。。。。。。。。。。。。。
/*服务次数小于最大服务次数*/

while (serverNum < maxService)

nSize =sizeof(clientAddr);
/*接受客户端请求*/

acceptfd = accept(listenfd, (struct sockaddr *)&clientAddr,&nSize);
/*如果接受失败*/

if (acceptfd == INVALID_SOCKET)//无效套接字

ErrorPrint("Error: accept failed \n");------这里编译无法通过,就提示"const char *" 类型的实参与 "char" 类型的形参不兼容问题
return 1;


我用的是vs2010....望大神求解下如何才能编译通过呢。。。我把最后的分数都贡献出去了。。。

void ErrorPrint(char X) 改为
void ErrorPrint(char *X)//char类型是字符类型,"Error: accept failed \n"是字符串,两者当然不兼容
但最好是这个
void ErrorPrint(const char *X)//以免ErrorPrint函数体意外修改X字符串的内容。追问

按照你那个强制转换后。。。编译又出现这些问题?这又是怎么回事呢?

追答

贴一下完整源代码?也有可能是你的配置出错。

追问

你能告诉我邮箱吗?我把整个cpp文件发给你看下。。看看是哪里错误。。。
我用的是vs2010的编译器。。。。

追答

代码本身没问题,(你的工程是只有这个源文件的吧?)可以编译通过。这应该是配置问题,干脆重新建一个工程试试吧?

参考技术A 虽然不怎么清楚网编,但是你再看看你的调用函数
char X
printf("Error%d: %s\n", WSAGetLastError(), X);

char 型的x用%s输出,合理么?

以上是关于error:"LPSTR"类型的实参数与"LPCWSTR"类型的形参不兼容的主要内容,如果未能解决你的问题,请参考以下文章

AppSync/Amplify Query using a Parameter Error ""FieldUndefined 类型的验证错误:"

TypeError: Error #1034: 强制转换类型失败:无法将 &quot;&quot; 转换为 Array。

XML Parser Error on line 47: 元 素类型为 "generatorConfiguration" 的内容必须匹配 "(properties?,cl

error C2440: "=": 无法从"char *"转换为"LPTSTR" LPTSTR buffer; buffer = new c

C语言 error C2143: 语法错误 : 缺少“;”(在“类型”的前面)?

"error_description":"引发了 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedE