- Forums
- Resources
- About
- Groups
Close
#define
typedef
using
是用于自定义类型的三种方法, 三者不等同, 有各自特点, 这里简单分享下.
首先说#define
例子:
#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name #define u8 (unsigned char)
#define所做的是单纯的文本替换, 在预处理时相应的文本就做了替换.
除了定义类型替换, #define还常用于常量定义, #define所定义内容被称之为macro(宏).
虽然有很多毛病, 但是不可否认即使在C++代码中, #define还是会经常会用到. 所需要注意的是, 尽量多用小括号, 以免产生副作用.
比如:
#define min(a,b) (a > b)?a:b
这种宏就很容易出毛病, 需要这样写:
#define min(a,b) (((a)>(b))(a):(b))
使用#define的最大缺点就是不好调试, 因为被替换的代码和实际写的代码之间有很大的区别.
只有注册用户才能在此添加评论。 如果您已经注册,请登录。 如果您还没有注册,请注册并登录。