ich eine Struktur haben nachfolgend aufgeführt:ein struct Mitglied in eine neue Struktur kopieren
typedef struct {
/* Device */
UART_DEV uartDev;
/* gpio */
uint32_t gpiopio;
} DEVICE;
In main.c ich eine neue uart Gerät erklären und in eine Funktion namens configure() übergeben;
/* main.c */
static UART_DEV newUartDev;
configure(newUartDev);
configure()
in test.c und innerhalb der configure Funktion Ich möchte befindet sich eine Kopie des uart Gerät erstellen und speichern sie im globalen Speicher.
/* Test.c */
UART_DEV globalUartDev;
DEVICE globalDevice;
static int configure(UART_DEV newUartDev) {
/* Create a global copy of spi device */
globalUartDev = newUartDev;
DEVICE.uartDev = globalUartDev;
}
Dann rufe ich eine andere Funktion in main.c setTest
. setTest befindet sich in test.c. Ich übergebe es nicht das uart Gerät, das in main.c deklariert wird, stattdessen möchte ich einfach die globale Struktur verwenden, die ich vorher erstellte. setTest
Anrufe open
in dev.c
/* test.c */
setTest() {
open(&globalDevice);
}
und schließlich werde ich das uart Gerät in offener verwenden.
/* dev.c */
int open(DEVICE *dev) {
read(dev->uartDev)
}
Ist dies der richtige Weg, um eine Kopie zu erstellen und um Dateien herumzugeben?
Globals sind böse. –
@MichaelWalz ist es besser, als die Datei von main.c weiterzugeben? – homeGrown
Schreiben Sie keinen Roman, der Ihren Code beschreibt, sondern veröffentlichen Sie den ** tatsächlichen ** Code als [mcve]. – Olaf