【发布时间】:2015-01-23 02:20:57
【问题描述】:
我有一个返回整数值的函数。现在我想编写一个宏来调用这个函数,获取返回值并在其前面添加一个字符串并返回结果字符串。
我试过这个:
#define TEST(x) is_enabled(x)
我在主函数中称这个宏为:
int ret = 0;
ret = TEST(2);
printf("PORT-%d\n", ret);
这非常有效。但是我希望宏返回字符串 PORT-x,其中 x 是被调用函数的返回值。我该怎么做?
编辑:
我也试过把它写成多行:
#define TEST(x)\
{\
is_enabled(x);\
}
并在main函数中调用为:
printf("PORT-%d\n", TEST(2));
但这会产生编译时错误:
error: expected expression before â{â token
【问题讨论】:
-
这可以通过编写一个“调用”
sprintf的宏来完成,但是您需要分配一个缓冲区并将其传递给该宏。问题是,你为什么要这样开始?因为感觉就像你试图以错误的方式解决问题。 -
为什么不能使用
strcat?为什么需要宏? -
你绝对应该为此编写一个函数...
-
@Gopi 我不想改变底层函数来返回一个字符串,所以我想出了一个想法,用宏来修改这个函数的输出。有那么难吗?