请问一下q->prior=p;outtextxy(160,290,&amp quot是什么意思;

解决错误:error C2665: “outtextxy”: 2 个重载中没有一个可以转换所有参数类型
一些程序在 VC6 下运行好好地,但是放到 VC2008 及更高版本 VC&下编译却报错误(以下仅以 VC2008 举例,高版本 VC 类似),例如使用如下语句:
outtextxy(10, 20, &Hello World&);
在 VC6 下可以成功编译,但在 VC2008 下编译后会有错误。
中文版错误提示如下:
error C2665: &outtextxy&: 2 个重载中没有一个可以转换所有参数类型
英文版错误提示如下:
error C2665: 'outtextxy' : none of the 2 overloads could convert all the argument types
同样的,对于其他一些包含字符串调用的函数,例如 loadimage、drawtext 等,也会遇到类似问题。
简单来说,这是由于字符编码问题引起的。
VC6 默认使用的 MBCS 编码,而 VC2008 及高版本 VC 默认使用的 Unicode 编码。以下详细解释这个问题:
用 char 表示字符时,英文占用一个字节,中文站用两个字节。这样有一个严重的问题:两个连续字节,究竟是两个英文字符,还是一个中文字符?为了解决这个问题,Unicode 编码诞生了。Unicode 编码不管中文英文都用两个字节表示。
对于 MBCS 编码,字符变量用 char 定义。
对于 Unicode 编码中,字符变量用 wchar_t 定义。
为了提高代码的自适应性,微软在 tchar.h 里面定义了 TCHAR,而 TCHAR 会根据项目定义的编码,自动展开为 char 或 wchar_t。
在 Windows API 和 EasyX 里面的大多数字符串指针都用的 LPCTSTR 或 LPTSTR 类型,LPCTSTR / LPTSTR 就是&Long Point (Const) Tchar STRing&的缩写。所以可以认为,LPCTSTR 就是 const TCHAR *,LPTSTR 就是 TCHAR * 。
于是,在 VS2008 里面,给函数传递 char 字符串时,就会提示前述错误。
解决方法有多个,目的一样,都是让字符编码相匹配。
方法一:将所有字符串都修改为 TCHAR 版本。
简单来说需要注意以下几点:
1. 在程序中使用 #include &tchar.h& 添加对 TCHAR 的支持。
2. 对于字符串,例如 &abc& 用 _T(&abc&) 表示。就是加上 _T(&&)。
3. 定义字符变量时,将 char 换成 TCHAR。
4. 操作字符串的函数也要换成相应的 TCHAR 版本,例如 strcpy 要换成 _tcscpy。(详见 MSDN)
方法二:在代码中取消 Unicode 编码的宏定义,让后续编译都以 MBCS 编码进行。&
方法很简单,只需要在代码顶部增加以下代码:
#undef UNICODE
#undef _UNICODE
这样就可以取消 Unicode 编码的宏定义,让整个项目以 MBCS 编码编译。
方法三:在 VC2008 里面,将项目属性中的字符编码修改为 MBCS。
以下分别列举中英文两种版本的 VC2008 的操作步骤:
在中文版&VC2008 中的操作方法如下:点菜单&项目-& xxx 属性...&(或右击项目名称,选择&属性&,或按 Alt + F7 也可以打开项目属性),点左侧的&配置属性&,在右侧的设置中找到&字符集&,修改默认的&使用 Unicode 字符集&为&使用多字节字符集&。
在英文版 VC2008 中的操作方法如下:点菜单&Project -& xxx Properties...&(或右击项目名称,选择 Properties,或按 Alt + F7 也可以打开项目属性),点左侧的&Configuration Properties&,在右侧的设置中找到&Character Set&,修改默认的&Use Unicode Character Set&为&Use Multi-Byte Character Set&。
设置完毕后,再次编译就可以看到问题已经解决。
浏览次数: 更新时间:请问一下signedchar*in,unsignedchar*out,intflag);ice,n=0,m=0,del_p-&dir =1;elseif(a[q-&_百度知道
请问一下signedchar*in,unsignedchar*out,intflag);ice,n=0,m=0,del_p-&dir =1;elseif(a[q-&
unsignedchar*dir =1,intflag),m=0;ice,n=0,del_p-&elseif(a[q-&gtsignedchar*in
我有更好的答案
按默认排序
n=0,unsignedchar*out,m=0;对比signedchar*in,del_num,intflag)p-&elseif(a[q-&dir =1;ice
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在线等structsales*intmain()intchoice,n=0,melsepDC-&SelectO_百度知道
在线等structsales*intmain()intchoice,n=0,melsepDC-&SelectO
hile(.top.empty())root=s;q-&prior=p!s
提问者采纳
&13CARDS&quotouttextxy(250;n&quot,171;printf(&thursday\#defineUP0x4800所以for(i=0;=25;i&i
)setcolor(8););)
其他类似问题
其他1条回答
&==&printf(&););sleep();i&&#47,109;Itused%dms\C&quot,(int)end),&\10;; ;/i )strcat(n&elsetmp[j 2比较outtextxy(245for(i=0
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁解决错误:“outtextxy”: 2 个重载中没有一个可以转换所有参数类型_easyx吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:4,196贴子:
解决错误:“outtextxy”: 2 个重载中没有一个可以转换所有参数类型收藏
原文地址: 一些程序在 VC6 下运行好好地,但是放到 VC2008 或 VC2010 下编译却报错误,例如使用如下语句:outtextxy(10, 20, "Hello World");在 VC6 下可以成功编译,但在 VC2008 或 VC2010 下编译后会有错误,中文错误如下:error C2665: “outtextxy”: 2 个重载中没有一个可以转换所有参数类型英文错误如下:error C2665: 'outtextxy' : none of the 2 overloads could convert all the argument types其他一些包含字符串调用的函数也会出现类似错误。错误的原因是因为 VC6 默认使用的 MBCS 编码,VC2008 / VC2010 默认使用的 Unicode 编码。解决办法有两个:[方法一]将 VC2008 / VC2010 的项目属性修改为 MBCS。以 VC2010 为例,右击项目,选择 Properties,点“Configuration Properties”,在右侧的设置中找到 Character Set,修改默认的 Use Unicode Character Set 为 Use Multi-Byte Character Set,点确定后再编译就可以看到已经没问题了。[方法二] (推荐)将 VC2008 / VC2010 的程序中的所有字符串的表示形式换成 Unicode 方式表示。简单来说注意三点:1. 对于字符串,例如 "abc" 用 _T("abc") 表示。就是加上 _T("")2. 定义字符变量时,将 char 换成 TCHAR。3. 操作字符串的函数也要换成相应的 TCHAR 版本,例如 strcpy 要换成 _tcscpy。(详见 MSDN)在另一篇文章中有稍微详细点的解释:什么是 LPCTSTR?为什么不直接用 char*?
这个答案很好
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 quot是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信