【发布时间】:2015-10-14 12:27:51
【问题描述】:
正如标题所说,我接手的一个项目有一个静态 volatile 结构,它在连接到 WiFi 网络时基本上保存网络数据。我需要创建这些结构的数组来保存以前网络的数据。
这就是我要复制的结构的样子:
static volatile struct
{
BYTE MySSID[32];
BYTE SsidLength;
BYTE SecurityMode;
BYTE SecurityKey[32];
BYTE SecurityKeyLength;
BYTE dataValid;
BYTE networkType;
BYTE IsLinked;
BYTE ConnectionID;
} NetworkStruct;
这是我最近一次失败的尝试创建一个数组,我可以将这个结构中的数据复制到:
static volatile struct
{
BYTE MySSID[32];
BYTE SsidLength;
BYTE SecurityMode;
BYTE SecurityKey[32];
BYTE SecurityKeyLength;
BYTE dataValid;
BYTE networkType;
BYTE IsLinked;
BYTE ConnectionID;
} SavedNetworks[10];
到目前为止,此尝试和其他所有尝试都会引发错误。
这是上述尝试引发的错误:
链接错误:无法分配节 .nbss,大小 = 944 字节, 属性 = bss 附近
链接错误:无法分配数据内存
【问题讨论】:
-
出于好奇,这是什么系统?裸机微控制器?哪一个?
-
volatile对您的阵列毫无意义。为了使事情正确,将您的struct声明为真实类型(没有volatile),将您的一个受未知更改影响的变量声明为易失性,并声明您的数组没有volatile。而且,为什么你希望你的数组是static?也许只是你函数中的一个局部变量就足够了? -
这是一个 PIC 微控制器。抱歉,我对 C 比较陌生,可能不完全理解 volatile 的工作原理,所以我正在研究解决这个问题。我基本上只是复制第一个结构(我没有编写)的格式,因为这段代码的重点是,每当模块成功连接到网络时,我都需要将详细信息添加到已保存网络的列表中。如果模块无法连接到网络超过 10 分钟,它会在重置之前花费 5 分钟尝试连接到每个已保存的网络。
标签: c arrays struct static volatile