私は現在、ユーザーが次のようなコードを記述できるようにするAPIを設計しています。
PowerMeter.forceVoltage(1 mV);
PowerMeter.settlingTime(1 ms);
現在、次のような定義を使用してこれを行っています。
#define mV *1.0e-03
これにより、ユーザーがコードを書くのが非常に便利になり、非常に読みやすくなりますが、もちろん欠点もあります。
int ms;
理解しにくいいくつかのコンパイラエラーをスローします。だから私はより良い解決策を探しています。
新しいC++11リテラルを試しましたが、これで達成できるのは次のとおりです。
long double operator "" _mV(long double value) {
return value * 1e-3;
}
PowerMeter.forceVoltage(1_mV);
結局、APIはボルトや秒のような単位を気にせず、数値だけを受け取るので、実際にforceVoltageにボルトを入力したかどうかをチェックしたくありません。したがって、これも可能であるはずです。
PowerMeter.forceVoltage(2 ms);
定義にとどまる以外に何かアイデアはありますか?