宏扩展 - 参数未被define取代

时间:2016-05-05 22:24:43

标签: c++ c macros

有没有办法使用#define作为扩展的宏的参数?

考虑这个例子:

#define FOO BAR
#define USE_FOO(the_foo, fooinator) void do_use_foo_ ## the_foo()\
{ std::cout << #the_foo << fooinator << std::endl;}

USE_FOO(FOO, "baz")

USE_FOO(FOO, "baz)扩展为

void do_use_foo_FOO () {
std::cout << "FOO" << "baz" << std::endl;}

虽然我希望(并希望)它扩展到

void do_use_foo_BAR () {
std::cout << "BAR" << "baz" << std::endl;}

将FOO定义为顶部的BAR。我缺少什么,有没有办法达到我的期望?

0 个答案:

没有答案