野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14002|回复: 8

程序

[复制链接]
发表于 2015-11-10 19:16:56 | 显示全部楼层 |阅读模式
struct FLAG
{
       uint8_t ak;
        uint8_t an;
};

struct FLAG  CH1;

CH1.ak=1;

请问为什么程序报错呢?

..\..\User\even_process.c(31): error:  #77-D: this declaration has no storage class or type specifier
..\..\User\even_process.c(31): error:  #147: declaration is incompatible with "struct FLAG CH1" (declared at line 29)
..\..\User\even_process.c(31): error:  #65: expected a ";"

回复

使用道具 举报

发表于 2015-11-11 08:45:37 | 显示全部楼层
可以用的,估计是
struct FLAG  CH1;
这个语句放的位置不对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-11 14:09:46 | 显示全部楼层
我在VC里用这语句试了一下,可以用。但在keill里却报错。

回复 支持 反对

使用道具 举报

发表于 2015-11-11 16:29:32 | 显示全部楼层
VC跟keil程序不兼容你难道不知道吗
最常见问题就是:
VC应该可以这样:

{
  char i;
  i=100;
char j;
  j=i+50;
}
这样的语句在keil是编译不过的
必须这样:
{
  char i;
char j;
  i=100;
  j=i+50;
}
回复 支持 反对

使用道具 举报

发表于 2015-11-11 16:29:55 | 显示全部楼层
Hot_water 发表于 2015-11-11 14:09
我在VC里用这语句试了一下,可以用。但在keill里却报错。

mdk的c标准跟vc的有点不一样,你把赋值语句放到函数里就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-11 16:34:01 | 显示全部楼层
flyleaf 发表于 2015-11-11 16:29
mdk的c标准跟vc的有点不一样,你把赋值语句放到函数里就可以了

谢谢了,现在知道哪里错了,好像只能在程序里面赋值。
回复 支持 反对

使用道具 举报

发表于 2015-11-12 18:12:30 | 显示全部楼层

struct FLAG
{
       uint8_t ak;
        uint8_t an;
}CH1;
改为直接声明变量试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-12 21:32:16 | 显示全部楼层
野草 发表于 2015-11-12 18:12
struct FLAG
{
       uint8_t ak;

我之前把它当作全局变量一样在函数外面赋值,不行,改到某个函数里面就行了。定义可以在外面定义,但赋值必须在函数里面。我写了个初始化函数。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-22 01:52 , Processed in 0.028814 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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