我的结构如下:
typedef struct {
/* Device */
UART_DEV uartDev;
/* gpio */
uint32_t gpiopio;
} DEVICE;
在main.c中,我声明了一个新的uart设备并将其传递给一个名为configure();
的函数/* main.c */
static UART_DEV newUartDev;
configure(newUartDev);
configure()
位于test.c中,在configure函数内部,我想创建一个uart设备的副本并将其存储在全局内存中。
/* 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;
}
然后我在main.c setTest
中调用另一个函数。 setTest位于test.c.我没有传递它在main.c中声明的uart设备,而是我只想使用我之前创建的全局结构。 setTest
在dev.c中调用open
/* test.c */
setTest() {
open(&globalDevice);
}
最后我将在开放时使用uart设备。
/* dev.c */
int open(DEVICE *dev) {
read(dev->uartDev)
}
这是创建副本并将其传递给文件的正确方法吗?
答案 0 :(得分:0)
DEVICE.uartDev = globalUartDev;
DEVICE
不是一个对象,它是一个结构。globalDevice
是一个对象。所以它应该是
globalDevice.uartDev = globalUartDev;