簡體   English   中英

為什么我不能在此 C 結構聲明中使用“BIGNUM”?

[英]Why can't I use `BIGNUM` in this C struct declaration?

我正在試驗一些 ~2005 C 代碼(我認為使用 OpenSSL 0.9.8),我嘗試在 Ubuntu 22.04 上使用 OpenSSL 3.0.2 make它。

最小示例:

#include <openssl/bn.h>

struct fraction
{
    BIGNUM numerator;
    BIGNUM denominator;
}

預期:一切都按預期構建。

實際:編譯器抱怨兩個字段的類型聲明不完整。

為什么會這樣? 這不是有效的聲明嗎? 或者是別的什么?

OpenSSL 的更高版本使幾種類型不透明,包括BIGNUM ,這意味着您不能在用戶代碼中直接實例化它們。 特別是BIGNUM類型從 1.1.0 版開始成為不透明類型。

您需要使用指針:

struct fraction
{
    BIGNUM *numerator;
    BIGNUM *denominator;
};

並使用適當的函數來創建和銷毀它們,以及使用相關的訪問器函數來訪問成員。

暫無
暫無

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

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