c++ - 有没有办法使用 c/c++ 中的宏/模板生成具有迭代编号的函数名称?
问题描述
我有以下代码
extern "C" void interrupt_handler_0();
extern "C" void interrupt_handler_1();
extern "C" void interrupt_handler_2();
...
void func() {
setup_isr(0, interrupt_handler_0);
setup_isr(1, interrupt_handler_1);
setup_isr(2, interrupt_handler_2);
...
}
在示例中,我每条线只有 3 条,但实际上还有更多,我试图以某种方式摆脱所有这些重复的线。
我最初的想法是做某种宏来生成这些,而不必把它们都写下来。类似的东西#define ISR_NAME(number) interrupt_handler_##number()
,然后只有一个循环来迭代数字。经过多次谷歌搜索和几次尝试,我开始认为这实际上是不可能的?当然你可以做一个宏循环,但迭代值 i 实际上并没有在预处理器时间内计算出来。所以我总是会得到类似的东西interrupt_handler_0+1+1+1+1();
。
这是对的还是我错过了什么?我还有其他方法可以完成这项工作吗?
我对 c++ 还是很陌生,所以我对模板了解不多,除了它们是在 c++ 中进行元编程的一种方式。我实际上不确定它们是否适用于这个问题,但由于这段代码实际上来自一个 c++ 项目,使用 c++/模板而不是宏的解决方案也被接受。
解决方案
推荐阅读
- function - 函数参数powershell的范围
- android - 应用程序关闭时警报管理器不工作。我正在使用安卓 10
- angular - 角度 9 - 异步最佳实践?
- aspectj - Spring AOP 围绕 Abstract 类的 Abstract 方法调用一些方法
- python-3.x - 安装 Anaconda-navigator 1.9.7 版后 Turtle 图形停止工作
- javascript - 我无法理解 props 在 reactjs 中的工作原理
- django - 带参数的 Django 自定义模型方法,NON DRY
- ios - 为什么我的 viewController 背景颜色永远是白色的?
- html - 如何修复 div 高度并从中减少额外的文本
- python - 等待用户输入后与 python 子进程交互