打印

为什么会报告错误呢??? 谢谢!!!!

[复制链接]
992|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
code|  楼主 | 2014-10-22 17:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
======================================================
void ss( unsigned char *p)
{
}
void main(void)
{
ss("AAA");   为什么这条语句在VC++6.0会报错误???
}             但是在KEIL C 750里面就不会报错误???  
错误代码如下

E:\1\111.cpp(31) : error C2664: 'ss' : cannot convert parameter 1 from 'char [4]' to 'unsigned char *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
   
======================================================
void ss( char *p)
{
}
void main(void)
{
ss("AAA");       这条语句在VC++6.0不会报错误
}            
======================================================

相关帖子

沙发
dirtwillfly| | 2014-10-22 19:46 | 只看该作者
AAA是个字符串,void ss( char *p)函数中传递的变量是个字符型指针,所以会报错

使用特权

评论回复
评论
code 2014-12-17 12:21 回复TA
谢谢 ,结帖子,给分 
板凳
dirtwillfly| | 2014-10-22 19:47 | 只看该作者
KEIL C和VC++中编译器等等是不一样的

使用特权

评论回复
地板
hgjinwei| | 2014-10-22 20:53 | 只看该作者
void ss( unsigned char *p)

unsigned char* 参量接收 char*参数,当然要警告啦。

可以这么调用:ss((unsigned char*)"AAA");
或者把void ss( unsigned char *p)改为void ss(char *p)

话说,VC6.0太弱智了,这都不警告!
而KEIL也太敏感了,这个只要输出警告就行了,报错干嘛啊?!

使用特权

评论回复
评论
code 2014-12-17 12:21 回复TA
谢谢 ,结帖子,给分 
5
icecut| | 2014-10-22 21:27 | 只看该作者
有些细节不用在乎。
字符串是有符号char,这个也很怪异。因为很难解释为什么不是无符号的。
大部分编译器会警告的。

使用特权

评论回复
评论
code 2014-12-17 12:21 回复TA
谢谢 ,结帖子,给分 
6
code|  楼主 | 2014-10-23 12:47 | 只看该作者
问题还没有解决

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:"></a><img src="http://uc2.21ic.com/avatar.php?uid=319240&size=middle"></img><a href="

40

主题

150

帖子

1

粉丝