我正在创建一个宏,它接受两个字符串:变量字符串和字面字符串。我怎样将它们组合成一个接受单一变量的函数?
我知道我们可以在宏中组合2个字面字符串。
#define LOGPRINT(x,y) func(x y)
#define LOGPRINTSINGLE(x) func(x)
func(char *fmt)
{
printf(fmt);
}
下面的代码是有效的:
char * test = "hey ";
LOGPRINT("hello ", "world!");
LOGPRINTSINGLE(hey);
但是下面的代码无法运行。
LOGPRINT(test, "world!");
我如何在宏中将可变字符串测试与文字字符串“world”组合?
期望的结果是将“hey world”传递给func()。
**编辑/注:规则是我只允许在此代码中更改,而不更改调用者和func()。
#define LOGPRINT(x,y) func((std::string(x) + std::string(y)).c_str())
。 - sklottconst char *
参数;你的所有问题都会消失。即使是代码膨胀问题也一样。 - Jonathan Leffler