【发布时间】:2011-02-28 15:37:50
【问题描述】:
是否可以编写一个定义#define 的#define?
例如:
#define FID_STRS(x) #x
#define FID_STRE(x) FID_STRS(x)
#define FID_DECL(n, v) static int FIDN_##n = v;static const char *FIDS_##n = FID_STRE(v)
但是:
#define FID_DECL2(n, v) #define FIDN_##n v \
FIDS_##n FID_STRE(v)
FID_DECL 工作正常,但会创建两个静态变量。是否可以使FID_DECL2 工作并定义两个定义?
【问题讨论】:
-
“两个静态变量”这有什么问题?
-
@James:两个静态变量都可以,除了我想联系我的字符串的字符串定义:FID_DECL(HELLO, 2) printf("Hello world" FIDS_HELLO) -> "Hello world2"
-
您可能会从其他东西生成您的 C 代码,例如使用更强大的预处理器,例如
m4或 GPP
标签: c c-preprocessor