LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1018|回复: 4

为何这里的&符号会编译不通过

[复制链接]
发表于 2006-9-19 11:44:53 | 显示全部楼层 |阅读模式
原代码如下:

  1. #include <stdio.h>
  2. #include <termios.h>
  3. #include <unistd.h>
  4. #include <stdlib.h>
  5. #define MESSAGE "play again?[y/n]"

  6. int do_show(char *);
  7. void set_tty();
  8. void tty_mode(int);

  9. struct termios term_temp,term_chg;

  10. int main()
  11. {
  12.         int i = 1;
  13.         while(i){
  14.                 i = do_show(MESSAGE);
  15.         }
  16.         return i;
  17. }

  18. int do_show(char *str)
  19. {
  20.         while(1){
  21.                 printf("%s",str);
  22.                 switch(getchar()){
  23.                         case 'y':;
  24.                         case 'Y':return 0;
  25.                         case 'n':;
  26.                         case 'N':;
  27.                         default:return 1;
  28.                 }
  29.         }
  30. }

  31. void set_tty()
  32. {
  33.         tcgetattr(0,&term_chg);
  34. [color=Red]        term_chg =term_chg & ~ECHO;
  35.         term_chg =term_chg & ~ICANON;
  36.         term_chg.c_cc[VMIN] = 1;
  37. [/color]
  38.         tcsetattr(0,TCSANOW,&term_chg);
  39. }

  40. void tty_mode(int i)
  41. {
  42.         if(i = 0)
  43.                 tcgetattr(0,&term_temp);
  44.         else
  45.                 tcsetattr(0,TCSANOW,&term_temp);
  46. }

复制代码



用gcc编译的时候,居然提示红色部分invalid operands to binanry &,这是为何呢?
发表于 2006-9-19 12:34:39 | 显示全部楼层
不知道

换成 xx &= ~yy 试下...
回复 支持 反对

使用道具 举报

发表于 2006-9-19 12:37:04 | 显示全部楼层
... ==  

你的 term_chg 是个结构??


  那你还搞什么 & 二进制与,,你火星man?
回复 支持 反对

使用道具 举报

发表于 2006-9-19 12:45:12 | 显示全部楼层
呵呵,楼上的回答有趣
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-19 18:11:05 | 显示全部楼层
好了 我好像犯了个愚蠢的错误,最后程序可以运行了。写这段代码的最初用意是为了了解如何解决终端信号的编程,看来提问之前还是要再三看看,这样的错误拿出来问委实贻笑大方。希望大家那它当做闲时的笑料吧,菜鸟们要以我为戒,提问之前再三看看,莫要再蹈覆辙。还是要谢谢windwiny,谢谢你直接指出我的错误。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表