Chinaunix

标题: 求教:parse error before 问题 [打印本页]

作者: joshuazzh    时间: 2008-05-30 11:05
标题: 求教:parse error before 问题
代码编译总是出错:部分代码如下:


#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行也没有//
现谢谢了!!
有劳帮忙啊!
作者: net_robber    时间: 2008-05-30 11:32
看看这几行之前的部分,有没有些错的

比如标点用了中文的
作者: rocky1972    时间: 2008-05-30 11:51
>>>
/***********************************************
全局变量:实现内存和其他变量的共享
************************************************/
char buff[100];      //你的buff是个全局变量吧?!这没错
bzero(buff,sizeof(buff));~~~~~~line23
memset(buff,0,sizeof(buff));~~~~~line24   //这两行你为啥不放在一个函数里呢?兄弟
作者: 204tian    时间: 2008-05-30 11:57
函数不要放在外面, 这里当做了一个声明
作者: guojkd    时间: 2008-05-30 14:24
标题: 回复 #1 joshuazzh 的帖子
你的执行语句怎么放在声明里面??
作者: joshuazzh    时间: 2008-05-30 14:44
标题: 回复 #3 rocky1972 的帖子
改过来了!
正如您所说的
把这个函数放到主函数中在进行编译就没问题了!
谢谢大虾!
作者: joshuazzh    时间: 2008-05-30 14:45
标题: 回复 #5 guojkd 的帖子
谢谢!
放到主函数中就没有报错了!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2