Статический константный указатель на глобальный изменчивый
Как я могу объявить статический константный указатель на глобальный 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
будет делать работу без указателей. Я думаю, что вы усложняете простые вещи.