gpt4 book ai didi

c - c头文件中的静态结构声明和初始化

转载 作者:行者123 更新时间:2023-12-02 06:20:08 25 4
gpt4 key购买 nike

我开发了一个使用 MindTree 蓝牙 SDK 的嵌入式应用程序。

我在头文件中有以下内容:

typedef struct {
UCHAR outputDir;
UCHAR reset;
UCHAR nack;
UCHAR startCondition;
UCHAR stopCondition;
UCHAR busy;
} USCI_ConfigurationFlags;

static USCI_ConfigurationFlags usciConfigFlags = { UCTR, UCSWRST, UCNACKIFG, UCTXSTT, UCTXSTP, UCBBUSY };

稍后在两个 .c 文件中,我包含了上述 header 并在不同情况下有时从中断中使用 usciConfigFlags

这合法吗?

我试图理解为什么(如果它与问题有关)在调用 SDK 中的 BT_bluetooth_on 方法后结构的值在运行时发生变化。

谢谢,亚当。

最佳答案

static 这里并不是你想的那个意思。这意味着声明和变量只会在一个编译单元中可见。也就是说,您有两个独立的 usciConfigFlags 实例。

如果你想要一个全局变量,你需要使用 extern 而不是 static 并使用初始值进行实际声明(没有 extern)您的一个 c 文件中的值。

还要厌倦在没有适当锁定的情况下更改结构中的值。只读并发访问通常没问题。

关于c - c头文件中的静态结构声明和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12557769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com