Chinaunix首页 | 论坛 | 博客
  • 博客访问: 142562
  • 博文数量: 25
  • 博客积分: 100
  • 博客等级: 中士
  • 技术积分: 310
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-03 18:56
文章分类

全部博文(25)

文章存档

2012年(4)

2011年(21)

分类: C/C++

2011-06-26 17:01:08

TIPS:

1.宏定义是在注释之后解析的,所以不能用宏定义来替代注释里面的内容,也不能宏定义//以及/*这些符号;

2.宏定义都有生命周期(比如可移植代码中的一些的开关或参数“重载”),用#define和#undef 来控制,最后真正用上的应该是最后生存下来的那个值。如:
  1. #define X 1
  2. #define Y X*2
  3. #undef X
  4. #define X 2

  5. //y = 4
  6. int y = Y;

3.无值的宏定义(比如可移植代码中的一些编译开关)不能作为值赋给变量,编译会通不过;

4.#pragma pack(n) 和 #pragma pack() 用来开关自定义的对齐边界。真正对齐时是按照n和变量默认对齐值中较小的一个来。

5.#error是用来中断编译输出信息的一个指令,比如代码没编完,可以用这个标记一下。编译器会告诉我们是在哪个文件的哪一行。如
  1. type.c:7: error: #error
6.##的用法比较特殊,他可以连接两段字符,拼接后再由编译器解析。
阅读(1589) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~