Man*_*uel 2 c++ c-preprocessor
我想有一个C预处理器宏,它知道到目前为止该宏的实例化/宏调用的数量.例:
int main() {
printf("%d\n", MACRO());
printf("%d\n", MACRO());
}
Run Code Online (Sandbox Code Playgroud)
应该打印
0
1
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
请注意,这是不足够转发给一个函数如下建议.它应该在以下环境中工作:
// global variable
std::vector<bool> calls_hit;
#define OTHER_MACRO() \
{ \
const int counter = MACRO(); \
calls_hit.resize(std::max(calls_hit.size(), counter)); \
calls_hit[counter] = true; \
}
Run Code Online (Sandbox Code Playgroud)
为什么这必须是一个宏?无论如何,你可以在宏中用静态计数器包装一个函数:
int count_calls() {
static count = 0;
return count++;
}
#define MACRO() count_calls()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2278 次 |
| 最近记录: |