将结构体成员复制到新结构体中

标签 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 中,在配置函数内部我想创建 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/

相关文章:

c - 逐节读取文件内容

objective-c - 为什么 NSRect、NSPoint 等是结构体,而不是类?

memory - CUDA:纹理内存的访问时间是否类似于合并的全局内存?

c - 访问冲突 : run through array from bmp image

c++ - 如何消除写入位置的访问冲突

C - 想要将 struct 类型的函数放在单独的 .c 文件中

python - dill 转储 session : Making Jupyter-session pickle-able again

c++ - 令人困惑的 C++ 全局范围问题

c - C 中的 Readline 函数输出奇怪的结果

c - JACK 语言的 Lexer 中的段错误