C语言中如何使用宏包括单双井号可变参数
来源:优易学  2010-1-14 10:52:41   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  #define COMMAND(NAME) { NAME, NAME ## _command }

  //然后你就用一些预先定义好的命令来方便的初始化一个command结构的数组了:

  struct command commands[] = {

  COMMAND(quit),

  COMMAND(help),

  ...

  }

  COMMAND宏在这里充当一个代码生成器的作用,这样可以在一定程度上减少代码密度,间接地也可以减少不留心所造成的错误。我们还可以n个##符号连接 n+1个Token,这个特性也是#符号所不具备的。比如:

  #define LINK_MULTIPLE(a,b,c,d) a##_##b##_##c##_##d

  typedef struct _record_type LINK_MULTIPLE(name,company,position,salary);

  //这里这个语句将展开为:

  // typedef struct _record_type name_company_position_salary;

  关于...的使用

  ...在C宏中称为Variadic Macro,也就是变参宏。比如:

  #define myprintf(templt,...) fprintf(stderr,templt,__VA_ARGS__)

  //或者

上一页  [1] [2] [3] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训