簡體   English   中英

根據輸入參數將 void 指針轉換為另一種類型

[英]Cast a void pointer to another type based on an input parameter

我正在嘗試根據輸入參數創建 A 或 B 類型的變量,並為其分配一個強制轉換的 void 指針。

void set_info_param(void* info, bool req)
{
    ...
    if (req)
        struct info *capa_info = (struct info *) info;
    else
        struct info_old *capa_info = (struct info_old *) info;
    ... [Use capa_info]
}

當我嘗試編譯它時,我收到以下錯誤:

'struct' 之前的預期表達式

由於您定義了新變量,因此您需要將其放入塊中,例如:

if (req)
{
    struct info *capa_info = (struct info *) info;
    ...
}
else
{
    struct info_old *capa_info = (struct info_old *) info;
    ...
}

在 C 中,聲明不是語句。

另一方面,if 語句需要一個子語句。

因此,如果您希望 if 語句的子語句具有聲明,則將聲明包含在復合語句中,例如

if (req)
{
    struct info *capa_info = (struct info *) info;
}
else
{
    struct info_old *capa_info = (struct info_old *) info;
... [Use capa_info]
}

我正在嘗試創建 A 或 B 類型的變量

這不是 C 類型的工作方式。 每個變量都有一個在編譯時靜態已知的類型。 您不能讓變量根據運行時條件假定這兩種類型中的一種。 如果您需要兩種不同的類型,則必須使用兩個不同的變量。

暫無
暫無

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

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