我802.15.4 有一个代码执行AES旧项目它定义了默认的关键是这样的:C语言编译错误 - 表达式必须有一个恒定的值
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++。 –