免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18188 | 回复: 7
打印 上一主题 下一主题

求助:为什么会有"parse error before *"这样的错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-21 08:35 |只看该作者 |倒序浏览
在嵌入式开发中,一个用gcc编译通过的程序,用arm-elf-gcc编译却提示错误,下面是具体代码和错误提示
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include "datas.h"


#define SERV_ADDR "192.168.1.123"
#define SERV_PORT 12345

int main()
{

        int sock=socket(AF_INET,SOCK_STREAM,0);
        if(sock<0)
        {
                perror("creating socket error!");
                exit(1);
        }
        struct sockaddr_in serv_addr;
/*
        bzero(&serv_addr,sizeof(serv_addr));
        serv_addr.sin_family=AF_INET;
        if(inet_aton(SERV_ADDR,&serv_addr.sin_addr)<0)
        {
                perror("convert IP address error!");
                exit(1);
        }
        serv_addr.sin_port=htons(SERV_PORT);

        if(connect(sock,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr_in))<0)
        {
                perror("connect to server error!");
                exit(1);
        }

        struct card d;
        int i,j=0;
        while(j<10)
        {
                for(i=0;i<10;i++)
                {
                        d.time[i]  =48+j;
                        d.where[i] =48+j;
                        d.number[i]=48+j;
                        d.data[i]  =48+j;
                }
                write(sock,(char*)&d,sizeof(struct card));
                j++;
        }
        printf("%d messages has been send!\n",j);
        close(sock);
*/
        exit(0);
}
大部分代码都注释掉了,可就这么几句代码也提示有错,提示如下:
[root@super007 test]# arm-elf-gcc -c test.c
test.c: In function `main':
test.c:19: parse error before `struct'
求大家帮帮我吧,小第不胜感激!
网上没找到相关的资料,这是我的毕业设计啊,没多少天就要毕业了,时间很紧

论坛徽章:
0
2 [报告]
发表于 2006-05-21 08:57 |只看该作者
sockaddr_in

确保有定义吗?

论坛徽章:
0
3 [报告]
发表于 2006-05-21 09:00 |只看该作者
用了exit
应该包含头文件unistd.h吧

论坛徽章:
0
4 [报告]
发表于 2006-05-21 09:05 |只看该作者
原帖由 linternt 于 2006-5-21 09:00 发表
用了exit
应该包含头文件unistd.h吧



不会这样提示的!

论坛徽章:
0
5 [报告]
发表于 2006-05-21 09:30 |只看该作者
谢谢楼上几位热心的朋友,其中sockaddr_in不上我定义的,是系统定义的,应该没问题
unistd.h我刚才也试着添加了,但是问题还是没有解决

论坛徽章:
0
6 [报告]
发表于 2006-05-21 09:35 |只看该作者
这说明你使用的编译器只支持 C89 标准。这个 C 标准要求在一个块内的变量的声明要放在所有非声明语句的前面。

C99 以及 C++ 标准无此限制。

论坛徽章:
0
7 [报告]
发表于 2006-05-21 09:56 |只看该作者
斑竹,我实在是佩服你,绝对有真才实学,果然是这个问题
我要郑重地想你表示感谢!!!!

论坛徽章:
0
8 [报告]
发表于 2006-05-21 11:04 |只看该作者
这说明你使用的编译器只支持 C89 标准。这个 C 标准要求在一个块内的变量的声明要放在所有非声明语句的前面。

C99 以及 C++ 标准无此限制。

怪不得只在sco5。05上遇见这个问题。看来研究一下99 和89的区别还是重要的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP