c++ - 是否有可用于转换单位的 C++ 预处理器指令或类似指令
问题描述
我正在做一些电机控制,而不是说 39553 编码器滴答声,我的人脑说 6.5 英寸会更容易。我想通过在编译时转换它来节省处理器开销。有没有办法用预处理器指令或模板来做到这一点?谢谢。
解决方案
我会为此使用 a constexpr
。正如@ChrisMM 提到的,它不是预处理器,但它将在编译时而不是运行时进行评估。如果您给出的值对应于刻度和英寸之间的实际关系,您可以使用:
constexpr int toTicks(double inches) {
return int(6085 * inches);
}
通过对 int 进行强制转换,您可以确保您永远不会要求电机移动某个刻度的一小部分。使用这样的方法唯一需要注意的是,随着时间的推移,如果您要求电机移动到一堆不同的位置而不在每次移动之间返回原点,您的原点可能会随着舍入误差从转换到诠释。
推荐阅读
- reactjs - 如何在提交时关闭 Reactjs-popup 模式?
- python - Python; 在 tkinter 中更改对象的颜色
- c - C程序从用户使用for循环而不使用数组输入的N个数字中找到最大值,最小值,总和,平均值
- assembly - 与字符串比较
- php - 在 Joomla 模块中阻止或禁止 textare 中的坏词
- javascript - 使用 InputAccessoryView 反应本机焦点下一个输入
- c# - C#和Ruby之间的AES加密和解密
- python - python re.compile match在windows的完整路径中不匹配反斜杠
- python - 与 PORT 一起检查和打印 IP
- java - Spring Scheduler/Executor的AOP特性