Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1460899
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: C/C++

2012-12-01 15:45:48

1. #define in_val_u16(16val, tvb)

宏参数16val不能以数字开头

2. 可变参数宏
#define dbprintf(...) printf(__VA_ARGS__)
__VA_ARGS__

3. 可变参数宏的##

#define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)

这里,如果可变参数被忽略或为空,‘##’操作将使预处理器(preprocessor)去除掉它前面的那个逗号。如果你在宏调用时,确实提供了一些可变参数,GNU CPP也会工作正常,它会把这些可变参数放到逗号的后面。象其它的pasted macro参数一样,这些参数不是宏的扩展。


4. LOG(Windows)

  1. #define AUTO_FNC_TRACE { FILE *fp;fopen_s(&fp, "c:\\1.txt", "a");SYSTEMTIME sys;GetLocalTime( &sys );fprintf(fp, "%02d:%02d:%02d.%03d: %s\n",sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds, __FUNCTION__);fclose(fp);}
  2. #define L_TRACE(...) { FILE *fp;fopen_s(&fp, "c:\\1.txt", "a");fprintf(fp, ##__VA_ARGS__);fclose(fp);}
5. 侧效

  1. 错误的
  2. #define PRINT \
  3.       printf("a\n"); \
  4.       printf("a\n");

  5. if ( ok )
  6.   PRINT


修正后,加{}
#define PRINT { \

     printf("a\n"); \
     printf("a\n");}





阅读(789) | 评论(0) | 转发(0) |
0

上一篇:TC 快捷键

下一篇:C 大端 小端

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