0
 unsigned char rtc_time[6] = { pThis->hoursTens, pThis->hoursUnits, pThis->minutesTens, pThis->minutesUnits, pThis->secondsTens, pThis->secondsUnits };

不编译。我收到错误(6 次):需要常量表达式

每个变量都声明为无符号字符。我尝试过强制转换为 (const) ,但没有成功。

这是 MPLAB X IDE,C 语言,使用 Hi-Tech-PICC 编译器 v9.65PL1。

问题是什么?

当我如下定义变量时它可以工作,但我需要使用上面的变量。

 unsigned char rtc_time[6] = { 0x1, 0x2, 0x3, 0x4, 0x5, 0x6 };
4

2 回答 2

8

您不能使用其值在编译时未知的值来初始化数组。你的值struct在编译时是未知的,所以不是const表达式。
0x1, 0x2, ... 是const可以在编译时计算的表达式。

您可以声明一个数组,然后在运行时设置值,例如

unsigned char rtc_time[6];
...
rtc_time[0] = pThis->hoursTens;
//go on
于 2013-04-15T20:27:12.800 回答
3

当表达式由计算值组成时,您必须将它们作为语句而不是初始化器来执行。

...
unsigned char rtc_time[6];
...
rtc_time[0] = pThis->hoursTens;
rtc_time[1] = pThis->hoursUnits;
. . .
于 2013-04-15T20:29:07.947 回答