首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

gcc编译成功,arm-linux-gcc编译报错,请高手指教!解决方案

2012-03-16 
gcc编译成功,arm-linux-gcc编译报错,请高手指教!!环境RH9.0,gcc3.2arm-linux-gcc2.95.3编译以下程序gcc编

gcc编译成功,arm-linux-gcc编译报错,请高手指教!!
环境   RH9.0,gcc   3.2   arm-linux-gcc   2.95.3
编译以下程序gcc编译很顺利完成,但arm-linux-gcc   报错:

com1.c:   In   function   `set_speed ':
com1.c:147:   parse   error   before   `int '
com1.c:149:   `speed_arr '   undeclared   (first   use   in   this   function)
com1.c:149:   (Each   undeclared   identifier   is   reported   only   once
com1.c:149:   for   each   function   it   appears   in.)
com1.c:151:   `name_arr '   undeclared   (first   use   in   this   function)

程序源代码如下:
//copy   by   bobya2003
#include   <stdio.h>
#include   <string.h>
#include   <malloc.h>
#include   <sys/types.h>
#include   <sys/stat.h>
#include   <fcntl.h>
#include   <unistd.h>
#include   <termios.h>

#define   FALSE   0
#define   TRUE   1

int   set_Parity(int   fd,int   databits,int   stopbits,int   parity);
void   set_speed(int   fd,int   speed);

int   main(int   argc,char   **argv)
{
//int   fd
int   nread,nwrite;
char   buff[255];
char   *dev     =   "/dev/ttyS0 ";//com1
int   fd   =   open(   dev,   O_RDWR   |   O_NOCTTY   );//|   O_NOCTTY     );//O_NDELAY   );//|   O_NOCTTY   |   O_NDELAY   O_NONBLOCK
if   (-1   ==   fd)
{
perror( "Can 't   Open   Serial   Port ");
//exit(1);
}
else  
{
set_speed(fd,115200   );
if   (set_Parity(fd,8,1, 'N ')   ==   FALSE)    
{
printf( "Set   Parity   Error\n ");
close(fd);
//exit(1);
                }
else
{
printf( "com1   is   OK!\n ");

}
}
while(1)
{
nread   =   read(fd,buff,255);
if   (nread> 0)
{
buff[nread]= '\0 ';
printf( "The   Read   Data:%d,%s\n ",nread,buff);
printf( "Ready   send!\n ");
nwrite=write(fd, "12345 ",5);
if   (nwrite> 0)   printf( "send   OK\n ");
}
}
close(fd);
//exit(0);

}

int   set_Parity(int   fd,int   databits,int   stopbits,int   parity)
{  
              struct   termios   options;  
              if     (   tcgetattr(   fd,&options)     !=     0)   {  
                            perror( "SetupSerial   1 ");          
                            return(FALSE);    
              }
              options.c_cflag   &=   ~CSIZE;  
              options.c_lflag     &=   ~(ICANON   |   ECHO   |   ECHOE   |   ISIG);     /*Input*/


              options.c_oflag     &=   ~OPOST;       /*Output*/
              options.c_iflag       &=   ~IXON;                 //0x11
              options.c_iflag       &=   ~ICRNL;               //0x0d
//                 options.c_cflag|=CLOCAL;
//                 options.c_cflag|=CREAD;
//                 options.c_cflag&=~CRTSCTS;/*数据流控制,无*/

              switch   (databits)   /*设置数据位数*/
              {      
              case   7:                      
                            options.c_cflag   |=   CS7;  
                            break;
              case   8:          
                            options.c_cflag   |=   CS8;
                            break;      
              default:        
                            fprintf(stderr, "Unsupported   data   size\n ");   return   (FALSE);    
              }
switch   (parity)  
{      
              case   'n ':
              case   'N ':        
                            options.c_cflag   &=   ~PARENB;       /*   Clear   parity   enable   */
                            options.c_iflag   &=   ~INPCK;           /*   Enable   parity   checking   */  
                            break;    
              case   'o ':      
              case   'O ':          
                            options.c_cflag   |=   (PARODD   |   PARENB);   /*   设置为奇效验*/    
                            options.c_iflag   |=   INPCK;                           /*   Disnable   parity   checking   */  
                            break;    


              case   'e ':    
              case   'E ':      
                            options.c_cflag   |=   PARENB;           /*   Enable   parity   */        
                            options.c_cflag   &=   ~PARODD;       /*   转换为偶效验*/          
                            options.c_iflag   |=   INPCK;               /*   Disnable   parity   checking   */
                            break;
              case   'S ':  
              case   's ':     /*as   no   parity*/      
                      options.c_cflag   &=   ~PARENB;
                            options.c_cflag   &=   ~CSTOPB;break;    
              default:      
                            fprintf(stderr, "Unsupported   parity\n ");        
                            return   (FALSE);    
              }    
/*   设置停止位*/    
switch   (stopbits)
{      
              case   1:        
                            options.c_cflag   &=   ~CSTOPB;    
                            break;    
              case   2:        
                            options.c_cflag   |=   CSTOPB;    
                    break;
              default:        
                              fprintf(stderr, "Unsupported   stop   bits\n ");    
                              return   (FALSE);  
}  
/*   Set   input   parity   option   */  
if   (parity   !=   'n ')      
              options.c_iflag   |=   INPCK;  
tcflush(fd,TCIFLUSH);
options.c_cc[VTIME]   =   150;   /*   设置超时0   seconds*/      
options.c_cc[VMIN]   =   5;   /*   define   the   minimum   bytes   data   to   be   readed*/


if   (tcsetattr(fd,TCSANOW,&options)   !=   0)      
{  
              perror( "SetupSerial   3 ");      
              return   (FALSE);    
}  
return   (TRUE);    
}

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


                                                }
                                          tcflush(fd,TCIOFLUSH);      
                            }    
              }
}




[解决办法]
我试过了,可以编译通过。

你的arm gcc似乎有问题

热点排行