找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1725|回复: 5
打印 上一主题 下一主题
收起左侧

为什么Keil编译器会认为我要写汇编代码?

[复制链接]
跳转到指定楼层
楼主
ID:437083 发表于 2019-2-2 21:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的IDE是Keil μVision V5.26.2.0,是Keil官网2018年的版本,它的编译器是C51 Compiler V9.59.0.0
  1. #include<reg51.h>
  2. typedef unsigned int u16;
  3. void main()
  4. {
  5. P0=0x01;
  6. u16 i;
  7. }

复制代码
把声明新变量的语句放在给8位IO口赋值的语句后会让编译器报如下错误:
  1. syntax error near 'u16', expected '__asm'
  2. 'i': undefined identifier
复制代码
如果交换代码的第5、6行,那么编译器不报错
为什么先给8位IO口赋值再声明新变量会让编译器报错

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:164602 发表于 2019-2-3 08:52 | 只看该作者
申明放前面是没有错的。
至于为什么还不知道,也看到过全局变量写中间也没有报错。
回复

使用道具 举报

板凳
ID:89515 发表于 2019-2-3 09:08 | 只看该作者
c语言基础语法问题
回复

使用道具 举报

地板
ID:474677 发表于 2019-2-3 17:29 | 只看该作者
我估计应该是编译规则的问题,别的版本也有同样情况,声明还是要放在前面
回复

使用道具 举报

5#
ID:474232 发表于 2019-2-3 20:00 | 只看该作者

c语言基础语法问题 VS 8051单片基本应用,还要磨合一阵子了

评分

参与人数 2黑币 +20 收起 理由
还有谁? + 8
站着说话不腰疼 + 12

查看全部评分

回复

使用道具 举报

6#
ID:459868 发表于 2019-2-16 16:00 | 只看该作者
这是早期c语言规定的。把c语言标准换成c99就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表