免费注册 查看新帖 |

Chinaunix

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

[C] 求教:parse error before 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-30 11:05 |只看该作者 |倒序浏览
代码编译总是出错:部分代码如下:


#include     <stdio.h>      /*标准输入输出定义*/
#include     <stdlib.h>     /*标准函数库定义*/
#include     <unistd.h>     /*Unix标准函数定义*/
#include     <sys/types.h>  /**/
#include     <sys/stat.h>   /**/
#include     <fcntl.h>      /*文件控制定义*/
#include     <termios.h>    /*PPSIX终端控制定义*/
#include     <errno.h>      /*错误号定义*/
#include                <netinet/in.h>

#include                <sys/socket.h>

#include                <sys/wait.h>
#include                <string.h>

#define FALSE  -1

#define TRUE   0
#define SERVPORT 3333 /*服务器监听端口号 */

#define BACKLOG 10 /* 最大同时连接请求数 */

/***********************************************
全局变量:实现内存和其他变量的共享
************************************************/
char buff[100];
//bzero(buff,sizeof(buff));~~~~~~~~~~~~~~~~~~~~~~line23
//memset(buff,0,sizeof(buff));~~~~~~~~~~~~~~~~~~~~line24

/***********************************************
设置串口通信速率
参数说明
fd      类型 int  打开串口的文件句柄
speed   类型 int  串口速度
return  类型void
************************************************/

int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300,
            B38400, B19200, B9600, B4800, B2400, B1200, B300, };
int name_arr[] = {38400,  19200,  9600,  4800,  2400,  1200,  300,
            38400,  19200,  9600, 4800, 2400, 1200,  300, };
void set_speed(int fd, int speed)
{
  int   i;
  int   status;
  struct termios   Opt;
  tcgetattr(fd, &Opt);
  for ( i= 0;  i < sizeof(speed_arr) / sizeof(int);  i++)
   {
           if  (speed == name_arr)
           {
               tcflush(fd, TCIOFLUSH);
            cfsetispeed(&Opt, speed_arr);
            cfsetospeed(&Opt, speed_arr);
            status = tcsetattr(fd, TCSANOW, &Opt);
            if  (status != 0)
            perror("tcsetattr fd1");
             return;
             }
   tcflush(fd,TCIOFLUSH);
   }
}

编译出错信息如下:
[root@localhost ~]# arm-linux-gcc -o ser_socket_up_arm_1 server_1_ver1.c
server_1_ver1.c:23: error: parse error before "sizeof"
[root@localhost ~]# arm-linux-gcc -o ser_socket_up_arm_1 server_1_ver1.c
server_1_ver1.c:24: error: parse error before numeric constant
说明:
23行和24行处报错,注销这两句就没有问题了!
char buff[100];
//bzero(buff,sizeof(buff));~~~~~~~~~~~~~~~~~~~~~~line23
//memset(buff,0,sizeof(buff));~~~~~~~~~~~~~~~~~~~~line24
难道这几句代码有问题吗?????????
两种置零的方式都试过,google找不到没有找到合适的答案,有遇到过这种问题的吗???
注://是我后来注销的,以体现对比   第一次编译是23行是没有//的,第二次24行也没有//
现谢谢了!!
有劳帮忙啊!

论坛徽章:
0
2 [报告]
发表于 2008-05-30 11:32 |只看该作者
看看这几行之前的部分,有没有些错的

比如标点用了中文的

论坛徽章:
0
3 [报告]
发表于 2008-05-30 11:51 |只看该作者
>>>
/***********************************************
全局变量:实现内存和其他变量的共享
************************************************/
char buff[100];      //你的buff是个全局变量吧?!这没错
bzero(buff,sizeof(buff));~~~~~~line23
memset(buff,0,sizeof(buff));~~~~~line24   //这两行你为啥不放在一个函数里呢?兄弟

论坛徽章:
0
4 [报告]
发表于 2008-05-30 11:57 |只看该作者
函数不要放在外面, 这里当做了一个声明

论坛徽章:
0
5 [报告]
发表于 2008-05-30 14:24 |只看该作者

回复 #1 joshuazzh 的帖子

你的执行语句怎么放在声明里面??

论坛徽章:
0
6 [报告]
发表于 2008-05-30 14:44 |只看该作者

回复 #3 rocky1972 的帖子

改过来了!
正如您所说的
把这个函数放到主函数中在进行编译就没问题了!
谢谢大虾!

论坛徽章:
0
7 [报告]
发表于 2008-05-30 14:45 |只看该作者

回复 #5 guojkd 的帖子

谢谢!
放到主函数中就没有报错了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP