#c #pointers #struct #static #constants
#c #указатели #структура #статический #константы
Вопрос:
Я новичок в программировании на C, и я работаю над каким-то проектом, в котором мне приходится делиться большим количеством информации между разными исходными файлами.
В одном исходном файле я объявляю и инициализирую переменную определенной структуры, а в другом файле мне нужно использовать указатель на эту переменную для доступа к информации внутри нее, но не для ее изменения.
- эта переменная НЕ МОЖЕТ быть изменена где-либо еще в моем коде .
- эта переменная НЕ МОЖЕТ быть глобальной, она должна быть статической .
код :
//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
, также должен быть отмечен. То же самое должны делать переменные, которые используют это возвращаемое значение.