标签:预处理器

共 1 篇文章

C预处理器宏展开

最近在写一个用于简化生成代码的宏,该宏大致希望达到如下功能:

// macro.h
#if defined(T)
void T ## _func()
{
// ...
}
#endif

这段代码是不能用的,因为预处理符号##是不能用在代码中的,这里只是用来表示下宏希望实现的目的,即定义一个T,就为之定义一个对应的方法,比如说:

// 这段代码希望定义一个int_func方法
#define T int
#include "macro.h"
#undef T

上面提到了##是不能直接写在代码里的,所以我一开始是这样实现的:

// macro.h
#if defined(T)
#define func_m(TN) TN ## _func
#define T_func func_m(T)
void T_func()
{
// ...
}
#endif

但是,这样的写法并不能够正确的定义我们例子中想要的int_func ...

阅读全文