首页新闻找找看学习计划

C++ 在源文件中没有找到用 /Ycpch.d 命令行选项指定的“#include”语句

0
[待解决问题]

C++ 在写串口通信中有以下这样代码

char szDCBparam[50];
sprintf_s(szDCBparam, "baud=%d parity=%c data=%d stop=%d", BaudRate, Parity, ByteSize, StopBits);
if(GetCommState(hComm,&m_dcb)&&BuildCommDCB(szDCBparam,&m_dcb)){
    return true;
}
CloseHandle(hComm);
return false;

其中变量"szDCBparam"报错,提示“char”类型的实参与“LPCWSTR”类型的形参不兼容,
然后生成程序又提示一个->在源文件中没有找到用 /Ycpch.d 命令行选项指定的“#include”语句 的错误

C++
一只飞哥哥i的主页 一只飞哥哥i | 菜鸟二级 | 园豆:202
提问于:2019-11-21 16:29
< >
分享
所有回答(1)
0

你看看你是用的Unicode还是MBCS(多字节)(vs是项目属性中可以设置查看):

  1. 如果你是Unicode,那么这个函数就需要宽字节的,也就是LPCWSTR类型;
  2. 如果你是mbcs的,那么就不会报第一个错误。

还有strlen、strcmp等字符处理相关的函数都会涉及这个问题。

改法:

#include <tchar.h>
TCHAR szDCBparam[50];
sprintf_s(szDCBparam, _T("baud=%d parity=%c data=%d stop=%d"), BaudRate, Parity, ByteSize, StopBits);

搜搜Unicode和mbcs就知道

笔默纸言 | 园豆:208 (菜鸟二级) | 2020-03-22 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册