c++ - 我应该使用 C++ 宏来生成重载函数吗?
问题描述
假设我在课堂上创建了一些函数:
bool isRisingEdge() {
return current && !last;
}
我还想生成伴随它的这个函数的重载版本。举个例子,假设我需要用两种不同的类型重载它;每次都是相同的两种类型。每个重载首先调用一些函数(比如process()
),然后返回我原来的函数。
bool isRisingEdge(Signal signal) {
process(signal);
return isRisingEdge();
}
bool isRisingEdge(Button button) {
process(button);
return isRisingEdge();
}
我有很多这样的 is...() 函数,我想在我的课堂上重载它们。我可以定义一个宏来帮助我:
#define CREATE_OVERLOADED_FUNCTION(func_, type_) \
type_ func_(Signal signal) { \
process(signal); \
return func_(); \
} \
type_ func_(Button button) { \
process(button); \
return func_(); \
}
...然后使用这个宏而不是输入重载。
bool isRisingEdge() {
return current && !last;
}
CREATE_OVERLOADED_FUNCTION(isRisingEdge, bool)
bool isFallingEdge() {
return !current && last;
}
CREATE_OVERLOADED_FUNCTION(isRisingEdge, bool)
ETC
我的问题是这样的:
我应该将宏用于这样的简单目的,还是手动输入更好?
有没有更好的非宏观解决方案?
C++ 社区回避宏,但不要重复自己的原则也很重要,我不知道哪个“获胜”。
解决方案
推荐阅读
- proxysql - ProxySQL 在 PHP 7.4.23 (Silverstripe) 上插入重复条目
- flutter - 当我第一次加载 json 文件时变量返回 null
- javascript - 解析模块说明符“firebase/app”时出错
- javascript - 使用 JavaScript 获取 CSS 变量的值需要 setTimeout
- python-asyncio - 如何防止使用 socketio.AsyncClient 代码的实例阻塞?
- android - React-native-jitsi-meet 没有按钮工作
- powershell - 为什么 Powershell 输出在 5.1 和 Core 7.1.4 之间不同
- powershell - 在 Windows 10 pro 上以编程方式通过组策略停止更新
- django - 即使名称设置正确,也找不到反向 Django
- python - 我想知道为什么它不起作用。python时间计时器