Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2667
  • 博文数量: 1
  • 博客积分: 31
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-02 13:52
文章分类

全部博文(1)

文章存档

2012年(1)

我的朋友
最近访客

分类: C/C++

2012-03-28 16:56:44

如果预处理器不支持可变参数宏:


点击(此处)折叠或打开

  1. #define BeginLog__ \
  2. { \
  3.     char *_FF23FE43FD2_ = (char *)malloc(128); \
  4.     sprintf(_FF23FE43FD2_,

  5. #define __EndLog ); \
  6.     Log(llError, _FF23FE43FD2_, __FILE__, __LINE__); \
  7.     free(_FF23FE43FD2_); \
  8. };

  9. enum LogLevel {llMsg, llWarning, llError};

  10. void Log(LogLevel log_level, char *error_msg, char *filename, int line_no)
  11. {
  12.     switch(log_level)
  13.     {
  14.     case llWarning:
  15.         printf("Warning:[%s] in %s line:%d", error_msg, filename, line_no);
  16.         break;
  17.     case llError:
  18.         printf("Error:[%s] in %s line:%d", error_msg, filename, line_no);
  19.         break;
  20.     default: // llMsg
  21.         printf("Message:[%s] in %s line:%d", error_msg, filename, line_no);
  22.         break;
  23.     }
  24. }

使用:

点击(此处)折叠或打开

  1. BeginLog__ "cannot connect %s:%d", “192.168.1.111”, 8080 __EndLog;



支持 可变参数宏:


点击(此处)折叠或打开

  1. #define Log(...) printf(,__VA_ARGS__)
使用:

点击(此处)折叠或打开

  1. Log( "hello, %d ", "world");





阅读(493) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~

-小Y头-2012-03-30 01:12:02

预处理器不支持可变参数宏……一般不会吧/