我正在尝试让预处理器根据已定义的名称生成列表。像这样的东西
#define LIST "Start of list!"
#ifdef WITH_FOO
#define LIST LIST "Foo"
#endif
#ifdef WITH_BAR
#define LIST LIST "Bar"
#endif
#define LIST LIST "End of list!"
我从这里得到一些关于LIST被重新定义的警告,然后在我尝试使用LIST的代码中它给出了一个错误:“LIST没有在这个范围内声明”,除了警告,我相信它应该是
我怎样才能让它发挥作用?
答案 0 :(得分:3)
您可以使用一些辅助宏:
#ifdef WITH_FOO
# define LIST_FOO "Foo"
#else
# define LIST_FOO
#endif
// ... ditto for BAR
#define FOO "Start of list!" LIST_FOO LIST_BAR "End of list!"
答案 1 :(得分:1)
您不能像使用预处理器在C或C ++中那样逐步构建宏值。
您可以使用预处理器获取一些小故障 - 请参阅Boost Preprocessor库以获取可能的指示。但是,即便如此,我认为也没有提供您正在寻求的功能。