Статический константный указатель на глобальный изменчивый

Как я могу объявить статический константный указатель на глобальный volatile?

У меня пока есть это, но я не уверен, что это правильно:

// a.c
volatile bool flag_it_1;
volatile bool flag_it_2;

// a.h
extern volatile bool flag_it_1;
extern volatile bool flag_it_2;

// b.c
#include "a.h"
static volatile bool *const flag_it_ptr = &flag_it_1;

Редактировать: я использую это так:

if (*flag_it_ptr) {
        // work
        *flag_it_ptr = false;
}

Для тех, кто интересуется, почему я использую этот указатель: я могу поменять переменную, которую я использую, с компиляции на компиляцию, и не хотел менять имена во всем файле, поэтому таким образом я изменяю ее один раз. Более или менее похож на макрос или константную глобальную переменную.

Это правильно?

Редактировать: он скомпилирован на GCC

1 ответ

Решение

Эта конструкция просто объявляет указатель const на неконстантный объект. Таким образом, вам разрешено изменять ссылочный объект, но не сам указатель.

 #define flag_it_ptr flag_it_1 

будет делать работу без указателей. Я думаю, что вы усложняете простые вещи.

Другие вопросы по тегам