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