在数组中使用 volatile 类型
Use volatile type inside an array
我需要创建一些外部可变变量。然后在每个变量内部从 epprom 中获取一个值。然后将这些值组合到一个数组中
头文件:
typedef struct
{
int Value;
} SetValues;
extern volatile SetValues Mytest1;
extern volatile SetValues Mytest2;
extern volatile SetValues Mytest3;
源文件:
volatile SetValues Mytest1;
volatile SetValues Mytest2;
volatile SetValues Mytest3;
Mytest1.Value = DATAEE_ReadByte(21); // Here i'm reading from epprom
Mytest2.Value = DATAEE_ReadByte(22); // Here i'm reading from epprom
// i need each eeprom values(from volatile variables) to get them inside an array
int *CheckMyValue[] = {Mytest1.Value, Mytest2.Value ... };
我收到错误常量表达式要求。我怎样才能将其更改为使其正常工作?
您不能使用编译时未知的值初始化变量。
而不是:
...
int *CheckMyValue[] = {Mytest1.Value, Mytest2.Value ... };
写入:
...
#define NVALUES number_of_possible_values // put the appropriate number here
...
int CheckMyValue[NVALUES];
...
int main()
{
CheckMyValue[0] = Mytest1.Value;
CheckMyValue[1] = Mytest2.Value;
...
第二题:
CheckMyValue
是int
的数组,但是你声明它是指向int
的指针数组。因此 int *CheckMyValue[];
应更改为 int CheckMyValue[NVALUES];
其中 NVALUES
是数组中的条目数。
你在这里犯了一些错误你需要在某个函数中编写你的代码片段,比如 EEPROMDataTest() 并从主例程或其他线程上下文中调用它:
EEPROMDataTest()
{
Mytest1.Value = DATAEE_ReadByte(21); // Here i'm reading from epprom
Mytest2.Value = DATAEE_ReadByte(22); // Here i'm reading from epprom
// i need each eeprom values(from volatile variables) to get them inside an array
int CheckMyValue[] = {Mytest1.Value, Mytest2.Value ... }
//process further.
}
我假设您正在从 EEPROM 读取。所以,DATAEE_ReadByte 不是宏。
我需要创建一些外部可变变量。然后在每个变量内部从 epprom 中获取一个值。然后将这些值组合到一个数组中
头文件:
typedef struct
{
int Value;
} SetValues;
extern volatile SetValues Mytest1;
extern volatile SetValues Mytest2;
extern volatile SetValues Mytest3;
源文件:
volatile SetValues Mytest1;
volatile SetValues Mytest2;
volatile SetValues Mytest3;
Mytest1.Value = DATAEE_ReadByte(21); // Here i'm reading from epprom
Mytest2.Value = DATAEE_ReadByte(22); // Here i'm reading from epprom
// i need each eeprom values(from volatile variables) to get them inside an array
int *CheckMyValue[] = {Mytest1.Value, Mytest2.Value ... };
我收到错误常量表达式要求。我怎样才能将其更改为使其正常工作?
您不能使用编译时未知的值初始化变量。
而不是:
...
int *CheckMyValue[] = {Mytest1.Value, Mytest2.Value ... };
写入:
...
#define NVALUES number_of_possible_values // put the appropriate number here
...
int CheckMyValue[NVALUES];
...
int main()
{
CheckMyValue[0] = Mytest1.Value;
CheckMyValue[1] = Mytest2.Value;
...
第二题:
CheckMyValue
是int
的数组,但是你声明它是指向int
的指针数组。因此 int *CheckMyValue[];
应更改为 int CheckMyValue[NVALUES];
其中 NVALUES
是数组中的条目数。
你在这里犯了一些错误你需要在某个函数中编写你的代码片段,比如 EEPROMDataTest() 并从主例程或其他线程上下文中调用它:
EEPROMDataTest()
{
Mytest1.Value = DATAEE_ReadByte(21); // Here i'm reading from epprom
Mytest2.Value = DATAEE_ReadByte(22); // Here i'm reading from epprom
// i need each eeprom values(from volatile variables) to get them inside an array
int CheckMyValue[] = {Mytest1.Value, Mytest2.Value ... }
//process further.
}
我假设您正在从 EEPROM 读取。所以,DATAEE_ReadByte 不是宏。