Ich habe zwei Dateien: uart.c
, hat es Schlepptau Variablen in den 4./5 Linien:Kann ich über einen Zeiger auf eine statische Variable einer Datei aus einer anderen Datei zugreifen? Diese Funktionen</p> <pre><code>void FIFOGet(FIFO* buffer, uint8_t* data, uint8_t length) </code></pre> <p>:
static FIFO inputBuffer;
static FIFO outputBuffer;
Und buffer.c
, die FIFO
structs zu verwalten sevenal Funktionen hat, wie sind für den allgemeinen Gebrauch, so dass ich nie mit inputBuffer
in buffer.c
direkt umgehen werde, nur über einen Zeiger. Die ablove Funktion wird von uart.c
wie genannt:
FIFOGet(&inputBuffer, someArray, n)
Aber innerhalb dieser Funktion verlor ich buffer
‚s-Wert (Ich weiß, dass inputBuffer
bei 0x04f0 befindet, wenn ich die Funktion aufrufen, aber buffer
‘ s-Wert ist 0x04ea - die zeigt auf outputBuffer
, ich bin 140% sicher, dass der Funktionsaufruf in Ordnung ist, überlasse ich nicht outputBuffer
). Dies passiert, weil ich inputBuffer
als static
deklariert habe? Wenn ja, werde ich es entfernen, aber sollte ich extern FIFO inputBuffer
in buffer.c
setzen? Ich hätte gerne, wenn jemand erklären könnte, wie es genau funktioniert.
lesen Sie über 'statische' Variablen ... –