我需要创建一些extern volatile变量。然后在每个变量里面从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 ... };
我得到所需的错误常量表达式。如何更改此功能才能使其正常工作?
答案 0 :(得分:1)
您无法使用编译时未知的值初始化变量。
而不是:
...
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
是数组中的条目数。
答案 1 :(得分:0)
你在这里犯了一些错误,你需要在一些函数中写一段代码,比如说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不是宏。