3
我定义的常数:转换一个#define的常数为字符串
#define MAX_STR_LEN 100
我试图做到这一点:
scanf("%" MAX_STR_LEN "s", p_buf);
但是,当然,这是行不通的。
什么预处理技巧可用于将MAX_STR_LEN数字转换为字符串,以便我可以在上面的scanf调用中使用它?基本上:
scanf("%" XYZ(MAX_STR_LEN) "s", p_buf);
XYZ()应该是什么?
注意:我当然可以直接做“%100s”,但是这样做会失败。我也可以做#定义MAX_STR_LEN_STR“100”,但我希望有一个更优雅的解决方案。
'的#define F(X)#x'将预处理'F(富)''到 “富”' –
你可能想看看我在http回答:// stackoverflow.com/questions/5256313/cc-macro-string-concatenation/5256500 –