我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++。 –