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. --- proto-vjoystick/vjoystick.cpp | 10 +++++++++- proto-vjoystick/vjoystick.h | 10 ---------- 2 files changed, 9 insertions(+), 11 deletions(-) (limited to 'proto-vjoystick') diff --git a/proto-vjoystick/vjoystick.cpp b/proto-vjoystick/vjoystick.cpp index 73cf74c6..e5e18157 100644 --- a/proto-vjoystick/vjoystick.cpp +++ b/proto-vjoystick/vjoystick.cpp @@ -39,7 +39,15 @@ const unsigned char handle::axis_ids[6] = // HID_USAGE_WHL, }; -constexpr double handle::val_minmax[6]; +static const double val_minmax[6] = +{ + 50, + 50, + 50, + 180, + 180, + 180 +}; void handle::init() { diff --git a/proto-vjoystick/vjoystick.h b/proto-vjoystick/vjoystick.h index 6469a4e6..72dde0f0 100644 --- a/proto-vjoystick/vjoystick.h +++ b/proto-vjoystick/vjoystick.h @@ -30,16 +30,6 @@ private: LONG axis_min[6]; LONG axis_max[6]; - static constexpr double val_minmax[6] = - { - 50, - 50, - 50, - 180, - 180, - 180 - }; - void init(); public: handle(); -- cgit v1.2.3