безопасность объекта const static struct в C

#c #pointers #struct #static #constants

#c #указатели #структура #статический #константы

Вопрос:

Я новичок в программировании на C, и я работаю над каким-то проектом, в котором мне приходится делиться большим количеством информации между разными исходными файлами.

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

  1. эта переменная НЕ МОЖЕТ быть изменена где-либо еще в моем коде .
  2. эта переменная НЕ МОЖЕТ быть глобальной, она должна быть статической .

код :

 //file 1 :

typedef struct {
    bool (*decodeParameters)(void* interface, uint8_t command, uint16_t parameters[]);
    bool value;
} i_actuator_t;

static const i_actuator_t iActuator = {
    decodeActuatorParameters,  //pointer to a function in the same file 1
    false
};        //this variable has to be protected so it cannot be edited anywhere else , and it cannot be global .

i_actuator_t* getActuatorInterface (void) = {
    return amp;iActuator;
}
 

и в file 2 , я хочу сделать что-то вроде этого :

 i_actuator_t* iActuatorPTR = getActuatorInterface();
 

static const правильно ли здесь использовать переменную?
есть ли лучшее решение?

Спасибо

Ответ №1:

Указатель, возвращаемый вашей функцией const , также должен быть отмечен. То же самое должны делать переменные, которые используют это возвращаемое значение.