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

[复制链接]
1240|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)函数中传递的变量是个字符型指针,所以会报错

评论

谢谢 ,结帖子,给分  发表于 2014-12-17 12:21
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也太敏感了,这个只要输出警告就行了,报错干嘛啊?!

评论

谢谢 ,结帖子,给分  发表于 2014-12-17 12:21
icecut 发表于 2014-10-22 21:27 | 显示全部楼层
有些细节不用在乎。
字符串是有符号char,这个也很怪异。因为很难解释为什么不是无符号的。
大部分编译器会警告的。

评论

谢谢 ,结帖子,给分  发表于 2014-12-17 12:21
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部