我们有大量带有“功能位”的遗留代码,您可以在运行时切换功能,例如
if (GET_FEATURE ("foo")) {
// foo foo things
}
or
if (!GET_FEATURE ("bar")) {
// do "non-bar" things
}
or even
if (GET_FEATURE ("foo") && state->foo_might_apply ()) {
// do foo things
}
我希望能够运行过滤器并说“foo”已启用,并获得类似的代码
// do foo things ("if" test gone)
if (!GET_FEATURE ("bar")) {
// do bar things (this whole block untouched)
}
if (stat->foo_might_apply ()) {
// do foo things ("if" test simplified)
}
我知道 coan 可以为#ifdef 块做这些事情。我想要一些更深入代码的东西。
有任何想法吗?