Имеет ли смысл отбрасывать ключевое слово volatile? - PullRequest
0 голосов
/ 20 октября 2019

У меня есть экземпляры класса, которые используются с ключевым словом volatile и без него:

class C {};
volatile C v_c;
C nv_c;

Теперь я придумал следующую конструкцию для написания методов, которые работают как для энергозависимых, так и для энергонезависимых экземпляров. :

class C {
    public:
        void method() { methodQualified(false); };
        void method() volatile { methodQualified(); };
    private:
        void methodQualified(bool volatileSelf = true) volatile {
            auto& nqThis = volatileSelf ? *this : *const_cast<C*>(this);                
            // Do stuff with nqThis
        }
};

Но теперь мне интересно, изменит ли / как вызов methodQualified(false) изменение поведения компиляторов для вызовов методов в энергозависимых / энергонезависимых экземплярах. Имеет ли эта конструкция смысл? Основная идея состоит в том, чтобы иметь потенциальное снижение производительности при использовании volatile только в случае необходимости. Это код, написанный для Arduino.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...