У меня есть два файла: uart.c
, он имеет буксирные переменные в строках 4-5-го:Могу ли я получить доступ к статической переменной файла из другого файла с помощью указателя?
static FIFO inputBuffer;
static FIFO outputBuffer;
И buffer.c
, которая имеет sevenal функции управления FIFO
структурами, как:
void FIFOGet(FIFO* buffer, uint8_t* data, uint8_t length)
Эти функции для общего использования, так что я никогда не буду иметь дело с inputBuffer
в buffer.c
напрямую, только с помощью указателя. Ablove функция вызывается из uart.c
как:
FIFOGet(&inputBuffer, someArray, n)
Но внутри этой функции я потерял «значение s (я знаю, что inputBuffer
расположен на 0x04f0, когда я вызываю функцию, но buffer
» buffer
значение s является 0x04ea - который указывает на outputBuffer
, я на 140% уверен, что вызов функции прекрасен, я не прохожу outputBuffer
). Это происходит потому, что я объявил inputBuffer
как static
? Если это так, я удалю его, но должен ли я поставить extern FIFO inputBuffer
в buffer.c
? Я бы хотел, чтобы кто-нибудь мог объяснить, как это работает.
прочитал о 'static' переменных ... –