将struct成员复制到新结构中

时间:2017-07-07 11:57:09

标签: c struct global

我的结构如下:

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)
}

这是创建副本并将其传递给文件的正确方法吗?

1 个答案:

答案 0 :(得分:0)

DEVICE.uartDev = globalUartDev;  

DEVICE不是一个对象,它是一个结构。globalDevice是一个对象。所以它应该是

globalDevice.uartDev = globalUartDev;