From 0a92bc147f91f3ecacdf66d995f01f9577107a86 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 15 Feb 2018 09:06:13 +0100 Subject: clean up "static" and "constexpr" types - use `static constexpr inline' to avoid requiring explicit declarations in object code - use `const Foo* const' to maybe put into readonly binary segment (at least for ELF DSOs) - `constexpr' in function scope has storage, avoid `static' - don't use `constexpr' where there's no advantage, like arrays We'd like to avoid overhead of atomic initialization for each function call. No idea how `static constexpr' requiring storage in the standard plays with atomic initialization requirement. Hearsay points that `constexpr' without `static' in block scope behaves more to our liking. It's all hazy though. I'm not 100% sure if `static inline constexpr' has any storage. Hopefully none, like a #define, and stuff bigger than registers gets coalesced within the same module, with small stuff being immediates. --- tracker-s2bot/ftnoir_tracker_s2bot.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'tracker-s2bot') diff --git a/tracker-s2bot/ftnoir_tracker_s2bot.cpp b/tracker-s2bot/ftnoir_tracker_s2bot.cpp index a7411fb7..44ae6132 100644 --- a/tracker-s2bot/ftnoir_tracker_s2bot.cpp +++ b/tracker-s2bot/ftnoir_tracker_s2bot.cpp @@ -18,6 +18,15 @@ tracker_s2bot::~tracker_s2bot() wait(); } +static constexpr int add_cbx[] = +{ + 0, + 90, + -90, + 180, + -180, +}; + void tracker_s2bot::run() { if (s.freq == 0) s.freq = 10; timer.setInterval(1000.0/s.freq); @@ -44,15 +53,6 @@ void tracker_s2bot::run() { clamp(s.idx_z, 0, 3), }; - static constexpr int add_cbx[] = - { - 0, - 90, - -90, - 180, - -180, - }; - int add_indices[] = { s.add_yaw, s.add_pitch, s.add_roll, }; double orient[4] {}; -- cgit v1.2.3