需要常量表达式

标签 c variables embedded mplab

 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 };

最佳答案

您不能使用在编译时值未知的值来初始化数组。 struct 的值在编译时是未知的,因此不是 const 表达式。
0x10x2、... 是可以在编译时计算的 const 表达式。

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

unsigned char rtc_time[6];
...
rtc_time[0] = pThis->hoursTens;
//go on

关于需要常量表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024108/

相关文章:

embedded - 用于嵌入式的紧凑解压库

function - 只需写入函数名称(不带括号)即可调用 Lua 函数

C 程序段错误 main()

c - 使用防御性编程初始化结构数组的问题

c - 究竟如何? : operator work in C?

javascript - 声明变量和定义变量有区别吗

javascript - 即使网页重新加载,如何在 Javascript 中保留变量的值?

c - 8051 无法转储十六进制文件

c - 如何创建一个变量,其位映射到特定位置?

c - 如何在不同文件中使用struct C编程