CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

一段离奇代码,大家快来看呀 救人一命生造7级浮屠

楼主wangyun850607()2006-05-02 21:42:59 在 C/C++ / C语言 提问

请高人指点一下,语法的结构,尤其是"\"的意思,"int   global_state"和"struct   jpeg_error_mgr   *   err"的区别在什么地方?  
   
  包夜等待!!!!!!!  
  #define   jpeg_common_fields   \  
      struct   jpeg_error_mgr   *   err; /*   Error   handler   module   */\  
      struct   jpeg_memory_mgr   *   mem; /*   Memory   manager   module   */\  
      struct   jpeg_progress_mgr   *   progress;   /*   Progress   monitor,   or   NULL   if   none   */\  
      void   *   client_data; /*   Available   for   use   by   application   */\  
      boolean   is_decompressor; /*   So   common   code   can   tell   which   is   which   */\  
      int   global_state /*   For   checking   call   sequence   validity   */  
   
  /*   Routines   that   are   to   be   used   by   both   halves   of   the   library   are   declared  
    *   to   receive   a   pointer   to   this   structure.     There   are   no   actual   instances   of  
    *   jpeg_common_struct,   only   of   jpeg_compress_struct   and   jpeg_decompress_struct.  
    */  
  struct   jpeg_common_struct   {  
      jpeg_common_fields; /*   Fields   common   to   both   master   struct   types   */  
      /*   Additional   fields   follow   in   an   actual   jpeg_compress_struct   or  
        *   jpeg_decompress_struct.     All   three   structs   must   agree   on   these  
        *   initial   fields!     (This   would   be   a   lot   cleaner   in   C++.)  
        */  
  };  
  问题点数:20、回复次数:4Top

1 楼DelphiNew(沙鼠)回复于 2006-05-02 21:54:40 得分 0

这段代码的意思并不复杂。。  
  如果你觉得难明白,最好把所有的/*   xxx   */   都去掉。。。  
  '\'号处于行尾代表续行,也就是说编译器会认为这一行没有结束。。。  
  和#define配合可以定义很长的语句序列。  
   
  jpeg_common_struct中用到了jpeg_common_fields;估计代码的另几个结构体  
  也要用到jpeg_common_fields;这样写只是省力罢了。  
  用#define来减少结构体成员声明的重复。。。  
   
  注释中有说到:(This   would   be   a   lot   cleaner   in   C++.)。。。是因为:  
  C++中有继承,所以就用不着这个jpeg_common_fields的宏了。。Top

2 楼wangyun850607()回复于 2006-05-02 22:18:03 得分 0

大哥请说的再明白一点,int   global_state这样写合法吗   ,结构里面没有那个jpeg_common_fields  
  struct   jpeg_error_mgr   {  
      JMETHOD(void,   error_exit,   (j_common_ptr   cinfo));  
      JMETHOD(void,   emit_message,   (j_common_ptr   cinfo,   int   msg_level));  
      JMETHOD(void,   output_message,   (j_common_ptr   cinfo));  
      JMETHOD(void,   format_message,   (j_common_ptr   cinfo,   char   *   buffer));  
  #define   JMSG_LENGTH_MAX     200  
      JMETHOD(void,   reset_error_mgr,   (j_common_ptr   cinfo));  
      int   msg_code;  
  #define   JMSG_STR_PARM_MAX     80  
      union   {  
          int   i[8];  
          char   s[JMSG_STR_PARM_MAX];  
    }Top

3 楼DelphiNew(沙鼠)回复于 2006-05-03 22:09:38 得分 0

回楼上的:  
  <<int   global_state这样写合法吗?  
  当然不合法,不过后面在宏调用时加了分号了。于是就合法了。。当然。写两个分号也无所谓  
   
  struct   jpeg_common_struct   {  
  jpeg_common_fields;/*这里不就是那个jpeg_common_fields么,还有,看到后面有个分号了吧*/  
  /*   Additional   fields   follow   in   an   actual   jpeg_compress_struct   or  
  *   jpeg_decompress_struct.   All   three   structs   must   agree   on   these  
  *   initial   fields!   (This   would   be   a   lot   cleaner   in   C++.)  
  */  
  };Top

4 楼killerll()回复于 2006-05-03 22:12:29 得分 0

问问大家  
  为什么  
  int   deQueue(PNODE   *tail,int   *e)  
  {   PNODE   p,q;  
  if((*tail)->next   ==   *tail)return   –1;  
  p   =   (*tail)->next;  
  q   =   p->next;  
  *e   =   q->value;  
  ___(4)___   =   q->next;  
  if(*tail   =   q)   ___(5)___;  
  free(q);  
  return   0;  
  }  
  这段代码表示队列的出列啊?  
  麻烦解释一下。看了半天没有懂Top

相关问题

关键词

得分解答快速导航

  • 帖主:wangyun850607

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo