打印
[ZLG-ARM]

Keil C怎么连这样的错误连一个警告都没有 是需要进行设置吗

[复制链接]
1838|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wahahaabc|  楼主 | 2007-12-10 13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Keil C怎么连这样的错误连一个警告都没有 是需要进行设置吗
int a=10;
const int *ptr=&a;
*ptr = 1 // <==================== 怎么不报错

相关帖子

沙发
computer00| | 2007-12-10 13:38 | 只看该作者

不会吧?不要分号也不报错??

使用特权

评论回复
板凳
wahahaabc|  楼主 | 2007-12-10 18:12 | 只看该作者

RE:computer00

问题的关键不是少了一个分号(分号是偶写丢了),一个const类型的指针居然向其写入东西还不报错。
int a=10;
const int *ptr=&a;
*ptr = 1; // <===== 向一个const类型的指针写入东西,怎么不报错

使用特权

评论回复
地板
computer00| | 2007-12-10 18:23 | 只看该作者

晕,你是哪个keil C?51还是ARM的?没理由啊

使用特权

评论回复
5
wahahaabc|  楼主 | 2007-12-10 18:55 | 只看该作者

RE:computer00

Keil C51 V7.5版本,你可以试一试

使用特权

评论回复
6
wahahaabc|  楼主 | 2007-12-10 18:58 | 只看该作者

RE:computer00

用Keil ARM编译也是一样,在PC平台下,使用Borland C++ 5.6版本编译器立即报错:ERROR: can not modify a const object in function main

使用特权

评论回复
7
computer00| | 2007-12-10 19:00 | 只看该作者

我的试了,编译通不过...

使用特权

评论回复
8
wahahaabc|  楼主 | 2007-12-11 09:02 | 只看该作者

re:computer00

computer00 大侠使用的是哪一个版本的keil C51编译器

使用特权

评论回复
9
computer00| | 2007-12-11 09:23 | 只看该作者

哈哈,俺的版本比较低,c51 7.06

使用特权

评论回复
10
wahahaabc|  楼主 | 2007-12-11 10:04 | 只看该作者

RE:computer00

我用 Keil C51 V7.00的版本试了一下
下面这段程序会报错
int a=10;
const int *ptr=&a;
*ptr = 1; // 报错,提示: error C183: unmodifiable lvalue

但是,下面这段程序仍然不会报错
struct TT_tag
{
      int a;
      int b;
};


int main()
{
      struct TT_tag a;
      const struct TT_tag *ptr=&a;
      
      ptr->a = 0;// 不会报错
            
      return 0;
}

使用特权

评论回复
11
computer00| | 2007-12-11 10:54 | 只看该作者

我试了,的确,keil对这个检查不严格。

使用特权

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

本版积分规则

119

主题

627

帖子

0

粉丝