【发布时间】:2012-09-25 07:43:36
【问题描述】:
我从一个在 802.15.4 上实现 AES 的旧项目中获得了一个代码 它定义了这样的默认键:
static uint8_t default_key_source[8] = {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
然后定义一个以下列方式使用它的表:
uint8_t mac_key_table[34] =
{
// KeyIdLookupList[1].LookupData : macDefaultKeySource || g_Sec_KeyIndex_1
default_key_source[0], // LookupData[0]
default_key_source[1], // LookupData[1]
default_key_source[2], // LookupData[2]
default_key_source[3], // LookupData[3]
default_key_source[4], // LookupData[4]
default_key_source[5], // LookupData[5]
default_key_source[6], // LookupData[6]
...
}
编译时出现“表达式必须具有常量值”错误。这很奇怪,因为它曾经在不同的编译器上编译(不知道具体是哪个,但我使用的是用于 ARM 的 IAR 嵌入式工作台)
我尝试在 default_key_source 的静态声明之前添加 const。但这并没有帮助,我知道编译器无法用变量初始化结构,但是这些变量是常量,那么这里有什么问题?
【问题讨论】:
-
其他编译器可能是C++。
标签: c arrays compiler-errors