我的结构如下:
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 中,在配置函数内部我想创建 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)
}
这是创建副本并将其传递给文件的正确方法吗?
最佳答案
DEVICE.uartDev = globalUartDev;
DEVICE
不是一个对象,它是一个结构。globalDevice
是一个对象。所以它应该是
globalDevice.uartDev = globalUartDev;
关于将结构体成员复制到新结构体中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44970203/