【发布时间】:2012-06-07 08:23:28
【问题描述】:
我有一个需要连接字符串的代码,如下所示:
#define CMD(A,B) CMD_##A_PROMPT##B
void main()
{
int a = 10, b = 5;
printf("%s\n", CMD(a, b));
}
所需的输出是:CMD10_PROMPT5
这可以通过任何方式实现吗?
【问题讨论】:
-
为什么需要宏?
printf("CMD%d_PROMPT%d\n",a,b);有什么问题吗?a和b的值是运行时属性,因此不可用于宏扩展。 -
这个宏会被用来调用很多宏,这些宏的形式是:CMD10_PROMPT5 CMD11_PROMPT6 CMD12_PROMT10 等等,每个都有进一步的定义......所以简单的printf将不起作用
-
为什么是宏?随着变量值在运行时发生变化,您肯定需要函数而不是宏吗?
-
我有一个大代码,为了使代码紧凑,我正在考虑使用这个功能,但我想我将无法使用它。感谢您的帮助
标签: c macros operator-keyword