公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

XMC实验分享之129: 使用#define, typedef, using自定义类型

XMC实验分享之129: 使用#define, typedef, using自定义类型

User12775
Level 5
Level 5
First solution authored First like received

#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的最大缺点就是不好调试, 因为被替换的代码和实际写的代码之间有很大的区别.

0 点赞
1065 次查看
3 评论