[英]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.