首页 > 解决方案 > 是否有可用于转换单位的 C++ 预处理器指令或类似指令

问题描述

我正在做一些电机控制,而不是说 39553 编码器滴答声,我的人脑说 6.5 英寸会更容易。我想通过在编译时转换它来节省处理器开销。有没有办法用预处理器指令或模板来做到这一点?谢谢。

标签: c++arduinopreprocessormotordriver

解决方案


我会为此使用 a constexpr。正如@ChrisMM 提到的,它不是预处理器,但它将在编译时而不是运行时进行评估。如果您给出的值对应于刻度和英寸之间的实际关系,您可以使用:

constexpr int toTicks(double inches) {
    return int(6085 * inches);
}

通过对 int 进行强制转换,您可以确保您永远不会要求电机移动某个刻度的一小部分。使用这样的方法唯一需要注意的是,随着时间的推移,如果您要求电机移动到一堆不同的位置而不在每次移动之间返回原点,您的原点可能会随着舍入误差从转换到诠释。


推荐阅读