// define 31:
#define f_Q31(x) f_Q(31,x)
#define q31_F(x) q_F(31,x)
#define CHECK_Q31(q,def) CHECK_Q(31,q,def)
// define 25:
#define f_Q25(x) f_Q(25,x)
#define q25_F(x) q_F(25,x)
#define CHECK_Q25(q,def) CHECK_Q(25,q,def)
// etc.
以上可以概括,如下:
#define SUPPORT_TYPE(N) something?
添加新类型将是一行:
#define SUPPORT_TYPE_Q31 SUPPORT_TYPE(31)
#define SUPPORT_TYPE_Q25 SUPPORT_TYPE(25)
答案 0 :(得分:3)
预处理器只有一个传递,因此您无法使用其他#define
语句生成#define
个语句。
你可以使用一个小脚本(令人惊讶地想到python :))做你想做的事:
text="""// define {0}:
#define f_Q{0}(x) f_Q({0},x)
#define q{0}_F(x) q_F({0},x)
#define CHECK_Q{0}(q,def) CHECK_Q({0},q,def)
"""
for i in (25,31):
print(text.format(i))
运行此脚本时会生成:
// define 25:
#define f_Q25(x) f_Q(25,x)
#define q25_F(x) q_F(25,x)
#define CHECK_Q25(q,def) CHECK_Q(25,q,def)
// define 31:
#define f_Q31(x) f_Q(31,x)
#define q31_F(x) q_F(31,x)
#define CHECK_Q31(q,def) CHECK_Q(31,q,def)