Встроенный C: Могу ли я передать члены статической структуры для работы в другом файле, ЕСЛИ указатель на член передается fn в том же файле - PullRequest
1 голос
/ 17 апреля 2019

У меня есть такая структура:

typedef struct {

   uint8_t var_1;
   uint8_t var_2;

}TYPE_struct_variables;

static TYPE_struct_variables variables;

Ради аргумента, я хочу передать одному из членов в этой структуре другой слой к металлу.В данном примере это структура данных для внешнего устройства, и я хочу передать элемент 'variables->var_1' / 'variables.var_1' в интерфейс usart главного микроконтроллера.ОДНАКО, я все еще хочу ограничить доступ к этой структуре для всех функций вне этого файла.Будет ли работать отправка указателя на этот член, если этот указатель был отправлен fn в том же файле, что и структура?

Или произойдет ли сбой программы при обнаружении указателя внутри «ограниченного» пространства?

1 Ответ

3 голосов
/ 17 апреля 2019

C сам по себе ничего не знает об ограниченном пространстве в оперативной памяти.Если вы скрываете переменную как статическую, она не получит внешнюю связь.Это означает, что у него не будет символа вне его модуля компиляции, на который вы можете ссылаться, но у него будет обычный адрес в ОЗУ или ПЗУ (если ваша архитектура поддерживает это, а переменная постоянна), и этот адрес доступен для всех,

Или вкратце: вы можете передавать указатели на статические переменные так же, как вы можете передавать указатель на другие переменные или места в ОЗУ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...