簡體   English   中英

錯誤C2227:“-> yr”的左側必須指向類/結構/聯合/泛型類型

[英]error C2227: left of '->yr' must point to class/struct/union/generic type

我正在為WinCE編寫加密/解密程序。

當我編譯程序時,出現如下錯誤: 錯誤C2227:'-> yr'的左側必須指向類/結構/聯合/泛型類型

此代碼段是:

void ai(struct AES_ctx* ctx, const uint8_t* key)
{
  k(ctx->yr, key);
}

和相應的標頭代碼段:

#define AES_BLOCKLEN 16
#define AES_KEYLEN 32
#define AES_keyExpSize 240

struct AES_ctx
{
  uint8_t yr[AES_keyExpSize];
  uint8_t Iv[AES_BLOCKLEN];
};

void ai(struct AES_ctx* ctx, const uint8_t* key);

使用StandardSDK_500,ARMv4I編譯器可以正常工作,但是使用MIPSII,我可以做到這一點。

有人可以幫助解決此錯誤嗎?

您的代碼沒有錯:可以編譯。

(如果ctx是宏,在某些#included頭文件中定義,則該代碼可能會產生各種錯誤,包括您報告的錯誤,並且可能與編譯器有關;請使用#ifdef ctx ...測試)

您可能需要運行預處理器(通常使用-E選項),並查看生成的代碼。

(作為補充,在C ++中,這看起來更像

namespace AES {
    constexpr int blocklen=16;
    constexpr int keylen=32;
    constexpr int keyExpSize=240;

    struct ctx {
        std::uint8_t yr[keyExpSize];
        std::uint8_t Iv[blocklen];
    };
    // etc
}

即沒有宏,不會污染全局名稱空間。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM