error C2143,不缺分号的“缺分号错误”

csoapy 2006-03-08 08:22:43
我在config.h里定义了类型TReg:
typedef struct {
int aa;
}TReg;
在config.cpp里这么写:

TReg reg; //全局变量
reg.aa=8; //这一行却报错:

D:\yang\毕业设计\ChatRoom\config.cpp(17) : error C2143: syntax error : missing ';' before '.'
D:\yang\毕业设计\ChatRoom\config.cpp(17) : error C2501: 'reg' : missing storage-class or type specifiers
D:\yang\毕业设计\ChatRoom\config.cpp(17) : error C2371: 'reg' : redefinition; different basic types
D:\yang\毕业设计\ChatRoom\config.cpp(12) : see declaration of 'reg'
D:\yang\毕业设计\ChatRoom\config.cpp(17) : error C2143: syntax error : missing ';' before '.'


我并没有丢分号啊,这一行注释掉就可以通过编译。在自定义的函数里倒是可以用reg.aa;



...全文
213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenteanet 2006-03-08
  • 打赏
  • 举报
回复
楼上对
逸学堂 2006-03-08
  • 打赏
  • 举报
回复
TReg reg; //全局变量
reg.aa=8; //这一行却报错:
`~`~`~`~`~
全局变量,声明时必须初始化.
TReg reg = {8};
yzx1983 2006-03-08
  • 打赏
  • 举报
回复
……被oo插了一层楼
yzx1983 2006-03-08
  • 打赏
  • 举报
回复
全局变量的赋值作为一条语句当然应该放在函数里啊

不然就是在定义的同时初始化。

楼主一开始的代码两者都不是,所以出错。
oo 2006-03-08
  • 打赏
  • 举报
回复
TReg reg; //全局变量
reg.aa=8; //这一行却报错:你这一句是放函数体外面的吧。想初始化应该这样:TReg reg = {8};
csoapy 2006-03-08
  • 打赏
  • 举报
回复
现在我把它放到函数里了
InitApp(TRge* pReg)
{
pReg->aa=0;
}
这样行
但上面为什么出错呢?查了一下MSDN,它说这样也会出这种错误:

int i; // syntax error : missing ';' before 'division operator'
int j; /* no error */
但我的不是这种情况啊。
整个工程就一个TReg的变量。
大选 2006-03-08
  • 打赏
  • 举报
回复
up
windyloft 2006-03-08
  • 打赏
  • 举报
回复
没发现有什么问题

是不是reg由多个定义,改个名字看看

70,012

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧