статический константный указатель на глобальный изменчивый - PullRequest
0 голосов
/ 17 января 2019

Как я могу объявить статический константный указатель на глобальный 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;

Edit: Я использую это так:

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

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

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

Edit: Скомпилировано на gcc

1 Ответ

0 голосов
/ 17 января 2019

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

 #define flag_it_ptr flag_it_1 

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

...